diff --git a/AY2425S1-CS2103-F09-1_tp_master/authorship.json b/AY2425S1-CS2103-F09-1_tp_master/authorship.json index cdda7f10..412eaa92 100644 --- a/AY2425S1-CS2103-F09-1_tp_master/authorship.json +++ b/AY2425S1-CS2103-F09-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wuzengfu"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103-F09-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103-F09-1/tp/actions)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"cth06-Github"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103-F09-1/tp/graph/badge.svg?token\u003dLE5D8TDMN5)](https://codecov.io/gh/AY2425S1-CS2103-F09-1/tp)","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wuzengfu"},"content":"* Data CoNdUctorS is a desktop application for administrative director of CCAs (Co-Curricular Activities) who has to manage and access database of the members.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"* It allows users to efficiently and easily manage and access large CCA membership database (including creation, edit, and deletion of data entries)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"* For the detailed documentation of this project, see the [Data CoNdUctorS Product Website](https://ay2425s1-cs2103-f09-1.github.io/tp).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wuzengfu"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"cth06-Github":1,"wuzengfu":5,"-":2}},{"path":"config/checkstyle/checkstyle.xml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003c!DOCTYPE module PUBLIC","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" \"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN\"","lastModifiedDate":"2019-03-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" \"https://checkstyle.org/dtds/configuration_1_3.dtd\"\u003e","lastModifiedDate":"2019-03-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" This configuration file enforces rules for the coding standard at","lastModifiedDate":"2022-05-29","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" https://se-education.org/guides/conventions/java/intermediate.html","lastModifiedDate":"2022-05-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"--\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cmodule name\u003d\"Checker\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FileTabCharacter\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there are no tab characters in the file. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NewlineAtEndOfFile\"\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c!-- Accept LF, CR or CRLF to accomodate devs who prefer different line endings --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"lineSeparator\" value\u003d\"lf_cr_crlf\"/\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RegexpSingleline\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Checks that FIXME is not used in comments. TODO is preferred. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"((//.*)|(\\*.*))FIXME\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\u0027TODO is preferred to FIXME.\"\u0027 /\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionFilter\"\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"file\" value\u003d\"${config_loc}/suppressions.xml\"/\u003e","lastModifiedDate":"2019-02-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LineLength\"\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a line is too long. --\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"max\" value\u003d\"120\"/\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c!-- All Java AST specific tests live under TreeWalker module. --\u003e","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TreeWalker\"\u003e","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c!-- Required to allow exceptions in code style --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionCommentFilter\"\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"offCommentFormat\" value\u003d\"CHECKSTYLE.OFF\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"onCommentFormat\" value\u003d\"CHECKSTYLE.ON\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"checkFormat\" value\u003d\"$1\"/\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" IMPORT CHECKS","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c!-- Checks the ordering of import statements follow the rules that the default Eclipse formatter uses.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" The order rule \"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\" consists of:","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" 1. STATIC: static imports","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" 2. STANDARD_JAVA_PACKAGE: standard java/javax imports","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" 3. SPECIAL_IMPORTS: defined as org imports","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" 4. THIRD_PARTY_PACKAGE: defined as com imports","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CustomImportOrder\"\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"customImportOrderRules\"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" value\u003d\"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"specialImportsRegExp\" value\u003d\"^org\\.\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"thirdPartyPackageRegExp\" value\u003d\"^com\\.\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"sortImportsInGroupAlphabetically\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c!-- Checks for redundant import statements.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" An import statement is redundant if:","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * It is a duplicate of another import. This is, when a class is imported more than once.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * The class non-statically imported is from the java.lang package, e.g. importing java.lang.String.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * The class non-statically imported is from the same package as the current package.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RedundantImport\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003c!-- Checks for unused import statements.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" An import statement is unused if:","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" It\u0027s not referenced in the file.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UnusedImports\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AvoidStarImport\"/\u003e","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" NAMING CHECKS","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003c!-- Validate abbreviations (consecutive capital letters) length in identifier name --\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AbbreviationAsWordInName\"\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreFinal\" value\u003d\"false\"/\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAbbreviationLength\" value\u003d\"1\"/\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"PackageName\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for package names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z]+(\\.[a-z][a-z0-9]{1,})*$\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TypeName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, final fields against the expression \"^[A-Z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"TypeName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ConstantName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" \u003c!-- Validates non-private, static, final fields against the expression \"^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$\". --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"ConstantName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"applyToPrivate\" value\u003d\"false\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u003cmessage key\u003d\"name.invalidPattern\"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" value\u003d\"Variable \u0027\u0027{0}\u0027\u0027 should be in ALL_CAPS (if it is a constant) or be private (otherwise).\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"StaticVariableName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, non-final fields against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"StaticVariableName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*_?$\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MemberName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u003c!-- Validates non-static members against the supplied expression. --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MemberName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*$\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for method names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MethodName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*(_[a-z][a-zA-Z0-9]+){0,2}$\"/\u003e","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParameterName\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for method parameters against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalFinalVariableName\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for local final variables against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalVariableName\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for local variables against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" LENGTH and CODING CHECKS","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" \u003c!-- Checks that array type declarations follow Java Style","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" Java style: public static void main(String[] args) // Allowed","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" C style: public static void main(String args[]) // Not allowed","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ArrayTypeStyle\"/\u003e","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a catch block is empty and does not contain any comments. --\u003e","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"EmptyCatchBlock\"/\u003e","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LeftCurly\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" \u003c!-- Checks for placement of the left curly brace (\u0027{\u0027). --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RightCurly\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" \u003c!-- Checks right curlies on CATCH, ELSE, and TRY blocks are on","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" the same line. e.g., the following example is fine:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" } else","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003c!-- This next example is not fine:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" else","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" \u003c!-- Checks for braces around loop blocks --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NeedBraces\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" if (true) return 1; // Not allowed","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (true) { return 1; } // Not allowed","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" else if {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return 1; // else if should always be multi line","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" if (true)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" return 1; // Not allowed","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoopBody\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each variable declaration is in its own statement and on its own line. --\u003e","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MultipleVariableDeclarations\"/\u003e","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OneStatementPerLine\"/\u003e","lastModifiedDate":"2017-09-17","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-17","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" \u003c!-- Checks that long constants are defined with an upper ell.--\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UpperEll\" /\u003e","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FallThrough\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" \u003c!-- Warn about falling through to the next case statement. Similar to","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" javac -Xlint:fallthrough, but the check is suppressed if a single-line comment","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" on the last non-blank line preceding the fallen-into case contains \u0027fall through\u0027 (or","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" some other variants which we don\u0027t publicized to promote consistency).","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"reliefPattern\"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" value\u003d\"fall through|Fall through|fallthru|Fallthru|falls through|Falls through|fallthrough|Fallthrough|No break|NO break|no break|continue on\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingSwitchDefault\"/\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" \u003c!-- Checks that Class variables should never be declared public. --\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"VisibilityModifier\"\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"protectedAllowed\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowPublicFinalFields\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreAnnotationCanonicalNames\" value\u003d\"RegisterExtension, TempDir\"/\u003e","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" ORDER CHECKS","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the order of at-clauses follows the tagOrder default property value order.","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" @author, @version, @param, @return, @throws, @exception, @see, @since, @serial, @serialField, @serialData, @deprecated","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" \u003c!-- Checks if the Class and Interface declarations is organized in this order","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" 1. Class (static) variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" 2. Instance variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" 3. Constructors","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" 4. Methods","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" \u003cmodule name \u003d\"DeclarationOrder\"/\u003e","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" \u003c!-- Checks that default is after all cases in a switch statement --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"DefaultComesLast\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ModifierOrder\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" \u003c!-- Warn if modifier order is inconsistent with JLS3 8.1.1, 8.3.1, and","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" 8.4.3. The prescribed order is:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" public, protected, private, abstract, static, final, transient, volatile,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" synchronized, native, strictfp","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OverloadMethodsDeclarationOrder\"/\u003e","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" WHITESPACE CHECKS","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" \u003c!-- Checks that comments are indented relative to their position in the code --\u003e","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CommentsIndentation\"/\u003e","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAround\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" \u003c!-- Checks that various tokens are surrounded by whitespace.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" This includes most binary operators and keywords followed","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" by regular or curly braces.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"ASSIGN, BAND, BAND_ASSIGN, BOR,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" EQUAL, GE, GT, LAND, LCURLY, LE, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" RCURLY, SL, SLIST, SL_ASSIGN, SR_ASSIGN, STAR, STAR_ASSIGN\"/\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty constructors e.g. MyClass() {} --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyConstructors\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty methods e.g. void func() {} --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyMethods\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty types e.g. class Foo {}, enum Foo {} --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyTypes\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty loops e.g. for (int i \u003d 1; i \u003e 1; i++) {} --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoops\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty lambdas e.g. () -\u003e {} --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLambdas\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAfter\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" \u003c!-- Checks that commas, semicolons and typecasts are followed by whitespace. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, SEMI, TYPECAST\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceAfter\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace after various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":" UNARY_PLUS\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":" \u003c!-- No trailing whitespace --\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Regexp\"\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"[ \\t]+$\"/\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"illegalPattern\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\"Trailing whitespace\"/\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the non-assignment type operator is at the next line in a line wrap.","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":" This includes \"?\", \":\", \"\u003d\u003d\", \"!\u003d\", \"/\", \"+\", \"-\", \"*\", \"%\", \"\u003e\u003e\", \"\u003e\u003e\u003e\",","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":" \"\u003e\u003d\", \"\u003e\", \"\u003c\u003c\", \"\u003c\u003d\", \"\u003c\", \"^\", \"|\", \"||\", \"\u0026\", \"\u0026\u0026\", \"instanceof\",","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":" \"\u0026\" when used in a generic upper or lower bounds constraints,","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" e.g. \u003cT extends Foo \u0026 Bar\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" \"::\" when used as a reference to a method or constructor without arguments.","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":" e.g. String::compareToIgnoreCase","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"QUESTION, COLON, EQUAL, NOT_EQUAL, DIV, PLUS, MINUS, STAR, MOD, SR, BSR,","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" GE, GT, SL, LE, LT, BXOR, BOR, LOR, BAND, LAND, LITERAL_INSTANCEOF, TYPE_EXTENSION_AND, METHOD_REF\"/\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the assignment type operator is at the previous end of line in a line wrap.","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" This includes \"\u003d\", \"/\u003d\", \"+\u003d\", \"-\u003d\", \"*\u003d\", \"%\u003d\", \"\u003e\u003e\u003d\", \"\u003e\u003e\u003e\u003d\", \"\u003c\u003c\u003d\", \"^\u003d\", \"\u0026\u003d\".","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"ASSIGN, DIV_ASSIGN, PLUS_ASSIGN, MINUS_ASSIGN, STAR_ASSIGN, MOD_ASSIGN,","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":" SR_ASSIGN, BSR_ASSIGN, SL_ASSIGN, BXOR_ASSIGN, BOR_ASSIGN, BAND_ASSIGN\"/\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the \".\", \"@\" is at the next line in a line wrap. --\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"DOT, AT\"/\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the \",\", \"]\", \"[\", \"...\", \";\", \"(\" is at the previous end of line in a line wrap. --\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, RBRACK, ARRAY_DECLARATOR, ELLIPSIS, SEMI, LPAREN\"/\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Indentation\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"caseIndent\" value\u003d\"0\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"throwsIndent\" value\u003d\"8\" /\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBefore\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"SEMI, DOT, POST_DEC, POST_INC\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBeforeCaseDefaultColon\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace between method/constructor name and open parenthesis. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodParamPad\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParenPad\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before close parenthesis or after open parenthesis. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"-"},"content":" \u003c!-- Checks that non-whitespace characters are separated by no more than one whitespace character.","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before \u003d)","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SingleSpaceSeparator\"\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":" \u003c!-- Validate whitespace surrounding comments as well.","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed (single space before start of comment)","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"-"},"content":" a \u003d 1; /* Allowed (single space before start of comment) */","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"-"},"content":" /* Allowed (single space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before start of comment)","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"-"},"content":" a \u003d 1; /* Not allowed (more than one space before start of comment) */","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"-"},"content":" /* Not allowed (more than one space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"-"},"content":" This doesn\u0027t validate whitespace within comments so a comment /* like this */ is allowed.","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateComments\" value\u003d\"true\"/\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"-"},"content":" JAVADOC CHECKS","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"LowXiSi"},"content":" \u003c!-- Checks that all block-roles are ordered correctly. --\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"LowXiSi"},"content":" \u003c!-- Checks that Javadoc block roles appear only at the beginning of the line. --\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocBlockTagLocation\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"-"},"content":" \u003c!-- Checks that all Javadoc comments start from the second line. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocContentLocationCheck\" /\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each line in Javadoc has leading asterisks. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingLeadingAsterisk\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each non-empty line in Javadoc has whitespace after leading asterisk. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingWhitespaceAfterAsterisk\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"LowXiSi"},"content":" \u003c!-- Checks that for block roles, indentation of continuation lines is at least 4 spaces. --\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocTagContinuationIndentation\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"-"},"content":" \u003c!-- Checks the Javadoc\u0027s format for every class, enumeration and interface. --\u003e","lastModifiedDate":"2022-05-29","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocType\"\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":" \u003c!-- Checks the Javadoc\u0027s format for every public method (excluding getters, setters and constructors). --\u003e","lastModifiedDate":"2022-05-29","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMethod\"\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAnnotations\" value\u003d\"Override, Test, BeforeAll, BeforeEach, AfterAll, AfterEach, Subscribe\"/\u003e","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"accessModifiers\" value\u003d\"public\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateThrows\" value\u003d\"false\"/\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingReturnTag\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"METHOD_DEF, ANNOTATION_FIELD_DEF\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"InvalidJavadocPosition\"/\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":" \u003c!-- Checks that every public method (excluding getters, setters and constructors) has a header comment. --\u003e","lastModifiedDate":"2022-05-29","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocMethodCheck\"\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"minLineCount\" value\u003d\"1\"/\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingPropertyJavadoc\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreMethodNamesRegex\" value\u003d\"(set.*|get.*|main)\"/\u003e","lastModifiedDate":"2023-07-10","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":" \u003c!-- Checks that every public class, enumeration and interface has a header comment. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocType\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"\u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"LowXiSi":3,"-":431}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"cth06-Github"},"content":"We are a team based in the [National University of Singapore](http://www.nus.edu.sg) coming from varied and diverse backgrounds!","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"WinstonJin"},"content":"You can reach us at the email `nowherenearyou[at]comp.nus.edu.sg`","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":"### Low Xi Si","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"\u003cimg src\u003d\"images/lowxisi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":"[[github](https://github.com/lowxisi)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"[[portfolio](team/lowxisi.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"cth06-Github"},"content":"### Chua Tse Hui","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"cth06-Github"},"content":"Materials Science and Engineering Student.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"somethingfishyfishy"},"content":"\u003cimg src\u003d\"images/cth06-github.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"cth06-Github"},"content":"[[Google](http://www.google.com.sg)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"cth06-Github"},"content":"[[github](https://github.com/cth06-Github)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"cth06-Github"},"content":"* Role: Project Helper","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"WinstonJin"},"content":"### Winston Jin","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"WinstonJin"},"content":"\u003cimg src\u003d\"images/winstonjin.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"WinstonJin"},"content":"[[homepage](http://www.comp.nus.edu.sg/)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"WinstonJin"},"content":"[[github](https://github.com/winstonjin)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"WinstonJin"},"content":"* Roll: out","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wuzengfu"},"content":"### Wu Zengfu","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":"\u003cimg src\u003d\"images/wuzengfu.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wuzengfu"},"content":"[[github](https://github.com/wuzengfu)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wuzengfu"},"content":"[[portfolio](team/zengfu.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wuzengfu"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wuzengfu"},"content":"* Responsibilities: Model","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"somethingfishyfishy"},"content":"### Ernest Yu","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"somethingfishyfishy"},"content":"\u003cimg src\u003d\"images/somethingfishyfishy.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"somethingfishyfishy"},"content":"[[github](http://github.com/somethingfishyfishy)] ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"somethingfishyfishy"},"content":"* Role: Supervisor, Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"somethingfishyfishy"},"content":"* Responsibilities: Many","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"cth06-Github":6,"LowXiSi":4,"wuzengfu":5,"WinstonJin":6,"-":32,"somethingfishyfishy":7}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"somethingfishyfishy"},"content":"*Last edited by: somethingfishyfishy 10/06/24 12:55 AM*","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"somethingfishyfishy"},"content":"Administrative Directors of CCAs in NUS who wish to manage a database of the CCA members more effectively. ","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"WinstonJin"},"content":"The database size is around 50 students. These directors are tech savvy who can type fast.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"WinstonJin"},"content":"**Value proposition**: Enables users to efficiently and easily manage large CCA membership database ","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"somethingfishyfishy"},"content":"(including creation, edition, and deletion of data entries).","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"somethingfishyfishy"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"WinstonJin"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ - |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"WinstonJin"},"content":"|----------|-----------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"WinstonJin"},"content":"| `* * *` | new user | search the contact information by his/her name | find the information of this member quickly. |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"WinstonJin"},"content":"| `* * *` | user | remove a member from the address book | update the address book accordingly if he is no longer in the club |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"WinstonJin"},"content":"| `* * *` | user | use this app to populate the member’s details into the app database | save their details (name, year, tele handle, email address) into the database for future reference |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"WinstonJin"},"content":"| `* *` | user | see a demonstration or tutorial for me to get started | know how to use the app |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"WinstonJin"},"content":"| `*` | user that values efficiency | “manipulate” member’s data entries in batches | can do things efficiently (Manipulate includes: Edit, Delete and Add) |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"WinstonJin"},"content":"| `*` | intermediate user | generate a list of selected member information easily | observe only the information I need |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"WinstonJin"},"content":"| `*` | user | archive data from past members / alumni to somewhere else | use them in the future when the need arises, such as passing the details to comapnies who may only wish to invite graduates only |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"WinstonJin"},"content":"| `*` | expert user | train another new user to take over my role and responsibility in the CCA | hand over the attendance tracking process easily |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"WinstonJin"},"content":"| `*` | frequent user | indicate whether a member has attended a training/event | keep track of the participation status (how active it is) of each member |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"WinstonJin"},"content":"| `*` | frequent user | search for member\u0027s details based on active participation status | have a better sensing on member\u0027s involvement to choose for the next ExCo |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"WinstonJin"},"content":"| `*` | intermediate user | understand / be guided on the automation capabilities of this tool such as automatically updating particulars (year of study, graduation status, on exchange) when a new semester begins | use the app with ease |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"WinstonJin"},"content":"| `*` | user | view the PDPA stance the members have in terms of sending of info the 3rd parties | know whether I am allowed to send member’s personal details to 3rd parties |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"somethingfishyfishy"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"somethingfishyfishy"},"content":"### use cases","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"LowXiSi"},"content":"**Use case: Add a person**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"LowXiSi"},"content":"1. User requests to add person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"LowXiSi"},"content":"2. AddressBook adds the person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"LowXiSi"},"content":"* 1a. Given contact has invalid or duplicate fields.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"LowXiSi"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"LowXiSi"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"LowXiSi"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"somethingfishyfishy"},"content":"* 1b. Given contact has duplicate \u0027name\u0027 field.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"somethingfishyfishy"},"content":" * 1a1. AddressBook shows an error message and prompts user to re-enter with nickname.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"somethingfishyfishy"},"content":" Use case ends.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"LowXiSi"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"LowXiSi"},"content":"**Use case: Delete a person**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"LowXiSi"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"LowXiSi"},"content":"1. User requests to delete person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"LowXiSi"},"content":"2. AddressBook deletes the person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"LowXiSi"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"LowXiSi"},"content":"* 1a. The given person is not in the AddressBook","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"LowXiSi"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"LowXiSi"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"LowXiSi"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"LowXiSi"},"content":"* 1b. Multiple matching persons in the AddressBook","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"LowXiSi"},"content":" * 1b1. AddressBook shows list of all matching persons.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"LowXiSi"},"content":" * 1b2. User enters index of person to delete","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"LowXiSi"},"content":"**Use case: Search for person**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"LowXiSi"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"LowXiSi"},"content":"1. User requests to search for person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"LowXiSi"},"content":"2. AddressBook shows list of all matching persons","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"LowXiSi"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"LowXiSi"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"LowXiSi"},"content":"* 1a. User did not provide the search input","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"LowXiSi"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"LowXiSi"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"somethingfishyfishy"},"content":"**Use case: View all contacts**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"somethingfishyfishy"},"content":"**MSS**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"somethingfishyfishy"},"content":"1. User requests to view all contacts","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"somethingfishyfishy"},"content":"2. AddressBook shows list of all contacts","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"somethingfishyfishy"},"content":" Use case ends.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"somethingfishyfishy"},"content":" ","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"somethingfishyfishy"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"LowXiSi"},"content":"4. Data changes should be automatically saved to avoid loss of data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"LowXiSi"},"content":"5. Should validate data entries to ensure consistency and correctness (eg. check that email format is correct etc.)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"LowXiSi"},"content":"6. Should be able to accommodate increasing member data over time.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"LowXiSi"},"content":"7. Should be able to retrieve and display member data within 2 seconds.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"LowXiSi"},"content":"8. User Interface should be intuitive even for new users.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"somethingfishyfishy"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"LowXiSi":44,"WinstonJin":16,"-":375,"somethingfishyfishy":25}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 User Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wuzengfu"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 t/Admin` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wuzengfu"},"content":" [//]: # (Temporarily removed as there is no optional parameter.)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wuzengfu"},"content":" [//]: # (* Items in square brackets are optional.\u003cbr\u003e e.g `n/NAME [r/ROLE]` can be used as `n/John Doe t/friend` or as `n/John Doe`.)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wuzengfu"},"content":"* Items with `…`​ after them can be used from one to multiple times.\u003cbr\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" e.g. `[r/ROLE]…​` can be used twice as `r/External r/Marketing` etc.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"wuzengfu"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS r/ROLE…​`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"wuzengfu"},"content":"**Tip:** A person can have one to many roles which match one of the following","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"wuzengfu"},"content":"1. President","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"wuzengfu"},"content":"2. Vice President","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"wuzengfu"},"content":"3. Admin","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"wuzengfu"},"content":"4. Marketing","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"wuzengfu"},"content":"5. Events (internal)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"wuzengfu"},"content":"6. Events (external)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"wuzengfu"},"content":"7. External Relations","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"wuzengfu"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 r/Admin`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"wuzengfu"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 r/President r/Admin`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"wuzengfu"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [r/ROLE]…​`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"wuzengfu"},"content":"* When editing roles, the existing roles of the person will be removed i.e adding of roles is not cumulative.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"wuzengfu"},"content":"* `edit 2 r/Admin r/President` Edits the roles of the 2nd person to be Admin and President, this removes all existing roles user has.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"wuzengfu"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [r/ROLE]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/Admin t/President`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"wuzengfu"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [r/ROLE]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"wuzengfu":21,"-":189}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"cth06-Github"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003edata coNdUctorS\u003c/a\u003e","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"cth06-Github"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103-F09-1/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"cth06-Github":2,"-":65}},{"path":"docs/team/lowxisi.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"LowXiSi"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"LowXiSi"},"content":" layout: default.md","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"LowXiSi"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"LowXiSi"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":"* **Project management**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" * User Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":"* **Community**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":"* **Tools**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"LowXiSi":46}},{"path":"docs/team/somethingfishyfishy.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"somethingfishyfishy"},"content":"---","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"somethingfishyfishy"},"content":" layout: default.md","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"somethingfishyfishy"},"content":" title: \"Ernest\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"somethingfishyfishy"},"content":"---","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"somethingfishyfishy"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"somethingfishyfishy"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"somethingfishyfishy"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"somethingfishyfishy"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"somethingfishyfishy"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"somethingfishyfishy"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"somethingfishyfishy"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"somethingfishyfishy"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"somethingfishyfishy"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"somethingfishyfishy"},"content":"* **Project management**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"somethingfishyfishy"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"somethingfishyfishy"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"somethingfishyfishy"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"somethingfishyfishy"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"somethingfishyfishy"},"content":"* **Documentation**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"somethingfishyfishy"},"content":" * User Guide:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"somethingfishyfishy"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"somethingfishyfishy"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"somethingfishyfishy"},"content":" * Developer Guide:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"somethingfishyfishy"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"somethingfishyfishy"},"content":"* **Community**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"somethingfishyfishy"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"somethingfishyfishy"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"somethingfishyfishy"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"somethingfishyfishy"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"somethingfishyfishy"},"content":"* **Tools**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"somethingfishyfishy"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"somethingfishyfishy"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"somethingfishyfishy":46}},{"path":"docs/team/winstonjin.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"WinstonJin"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"WinstonJin"},"content":" layout: default.md","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"WinstonJin"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"WinstonJin"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"WinstonJin"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"WinstonJin"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"WinstonJin"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"WinstonJin"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"WinstonJin"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"WinstonJin"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"WinstonJin"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"WinstonJin"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"WinstonJin"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"WinstonJin"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"WinstonJin"},"content":"* **Project management**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"WinstonJin"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"WinstonJin"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"WinstonJin"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"WinstonJin"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"WinstonJin"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"WinstonJin"},"content":" * User Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"WinstonJin"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"WinstonJin"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"WinstonJin"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"WinstonJin"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"WinstonJin"},"content":"* **Community**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"WinstonJin"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"WinstonJin"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"WinstonJin"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"WinstonJin"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"WinstonJin"},"content":"* **Tools**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"WinstonJin"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"WinstonJin"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"WinstonJin"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"WinstonJin":46}},{"path":"docs/team/zengfu.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wuzengfu"},"content":"---","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wuzengfu"},"content":" layout: default.md","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wuzengfu"},"content":" title: \"Zengfu\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wuzengfu"},"content":"---","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wuzengfu"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wuzengfu"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wuzengfu"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wuzengfu"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wuzengfu"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wuzengfu"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wuzengfu"},"content":"* **Project management**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wuzengfu"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wuzengfu"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wuzengfu"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wuzengfu"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wuzengfu"},"content":"* **Documentation**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wuzengfu"},"content":" * User Guide:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wuzengfu"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wuzengfu"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wuzengfu"},"content":" * Developer Guide:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wuzengfu"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wuzengfu"},"content":"* **Community**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wuzengfu"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wuzengfu"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wuzengfu"},"content":"* **Tools**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wuzengfu"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wuzengfu"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wuzengfu"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"wuzengfu":46}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"WinstonJin"},"content":" .append(\"; Telegram: \")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"WinstonJin"},"content":" .append(person.getTelegram())","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" .append(\"; StudentStatus: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" .append(person.getStudentStatus())","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" .append(\"; Nickname: \");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" person.getRoles().forEach(builder::append);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"LowXiSi":4,"WinstonJin":2,"-":45}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"cth06-Github"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NICKNAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"WinstonJin"},"content":" + PREFIX_TELEGRAM + \"TELEGRAM \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" + PREFIX_STUDENT_STATUS + \"STUDENT_STATUS \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" + PREFIX_ROLE + \"ROLE [...]\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"cth06-Github"},"content":" + \"[\" + PREFIX_NICKNAME + \"NICKNAME]\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"WinstonJin"},"content":" + PREFIX_TELEGRAM + \"98765432 \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" + PREFIX_STUDENT_STATUS + \"undergraduate 3 \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wuzengfu"},"content":" + PREFIX_ROLE + \"Admin \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" + PREFIX_ROLE + \"President \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"cth06-Github"},"content":" + PREFIX_NICKNAME + \"altName\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"cth06-Github":3,"LowXiSi":5,"wuzengfu":3,"WinstonJin":2,"-":74}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"WinstonJin"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"WinstonJin"},"content":" + \"[\" + PREFIX_TELEGRAM + \"TELEGRAM] \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" + \"[\" + PREFIX_STUDENT_STATUS + \"STUDENT_STATUS] \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" + \"[\" + PREFIX_ROLE + \"ROLE]...\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"WinstonJin"},"content":" + PREFIX_TELEGRAM + \"91234567 \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"WinstonJin"},"content":" Telegram updatedTelegram \u003d editPersonDescriptor.getTelegram().orElse(personToEdit.getTelegram());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"LowXiSi"},"content":" StudentStatus updatedStudentStatus \u003d","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LowXiSi"},"content":" editPersonDescriptor.getStudentStatus().orElse(personToEdit.getStudentStatus());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e updatedRoles \u003d editPersonDescriptor.getRoles().orElse(personToEdit.getRoles());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"wuzengfu"},"content":" Nickname updatedNickname \u003d editPersonDescriptor.getNickname().orElse(personToEdit.getNickname());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"LowXiSi"},"content":" return new Person(updatedName, updatedTelegram, updatedEmail, updatedStudentStatus, updatedRoles,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"LowXiSi"},"content":" updatedNickname);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"WinstonJin"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"LowXiSi"},"content":" private StudentStatus studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"wuzengfu"},"content":" private Set\u003cRole\u003e roles;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"cth06-Github"},"content":" private Nickname nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"LowXiSi"},"content":" * A defensive copy of {@code roles} is used internally.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"WinstonJin"},"content":" setTelegram(toCopy.telegram);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"LowXiSi"},"content":" setStudentStatus(toCopy.studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"LowXiSi"},"content":" setRoles(toCopy.roles);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"cth06-Github"},"content":" setNickname(toCopy.nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"wuzengfu"},"content":" return CollectionUtil.isAnyNonNull(name, telegram, email, studentStatus, roles);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"WinstonJin"},"content":" public void setTelegram(Telegram telegram) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"WinstonJin"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"WinstonJin"},"content":" public Optional\u003cTelegram\u003e getTelegram() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"WinstonJin"},"content":" return Optional.ofNullable(telegram);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"LowXiSi"},"content":" public void setStudentStatus(StudentStatus studentStatus) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"LowXiSi"},"content":" this.studentStatus \u003d studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"LowXiSi"},"content":" public Optional\u003cStudentStatus\u003e getStudentStatus() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"LowXiSi"},"content":" return Optional.ofNullable(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"LowXiSi"},"content":" * Sets {@code roles} to this object\u0027s {@code roles}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"LowXiSi"},"content":" * A defensive copy of {@code roles} is used internally.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"LowXiSi"},"content":" public void setRoles(Set\u003cRole\u003e roles) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"wuzengfu"},"content":" this.roles \u003d (roles !\u003d null) ? new HashSet\u003c\u003e(roles) : null;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"LowXiSi"},"content":" * Returns {@code Optional#empty()} if {@code roles} is null.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"LowXiSi"},"content":" public Optional\u003cSet\u003cRole\u003e\u003e getRoles() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"wuzengfu"},"content":" return (roles !\u003d null) ? Optional.of(Collections.unmodifiableSet(roles)) : Optional.empty();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"cth06-Github"},"content":" public void setNickname(Nickname nickname) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"cth06-Github"},"content":" this.nickname \u003d nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"cth06-Github"},"content":" public Optional\u003cNickname\u003e getNickname() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"cth06-Github"},"content":" return Optional.ofNullable(nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"WinstonJin"},"content":" \u0026\u0026 Objects.equals(telegram, otherEditPersonDescriptor.telegram)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"LowXiSi"},"content":" \u0026\u0026 Objects.equals(studentStatus, otherEditPersonDescriptor.studentStatus)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"wuzengfu"},"content":" \u0026\u0026 Objects.equals(roles, otherEditPersonDescriptor.roles)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"cth06-Github"},"content":" \u0026\u0026 Objects.equals(nickname, otherEditPersonDescriptor.nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"WinstonJin"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"LowXiSi"},"content":" .add(\"studentStatus\", studentStatus)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"LowXiSi"},"content":" .add(\"roles\", roles)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"cth06-Github"},"content":" .add(\"nickname\", nickname)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"LowXiSi":26,"cth06-Github":11,"wuzengfu":8,"WinstonJin":12,"-":200}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"cth06-Github"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NICKNAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"WinstonJin"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wuzengfu"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_EMAIL, PREFIX_STUDENT_STATUS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wuzengfu"},"content":" PREFIX_ROLE, PREFIX_NICKNAME);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" if (!arePrefixesPresent(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" argMultimap, PREFIX_NAME, PREFIX_STUDENT_STATUS, PREFIX_TELEGRAM, PREFIX_EMAIL, PREFIX_ROLE)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_EMAIL, PREFIX_STUDENT_STATUS, PREFIX_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"WinstonJin"},"content":" Telegram telegram \u003d ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":" StudentStatus studentStatus \u003d ParserUtil.parseStudentStatus(argMultimap.getValue(PREFIX_STUDENT_STATUS).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e roleList \u003d ParserUtil.parseRoles(argMultimap.getAllValues(PREFIX_ROLE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" Nickname nickname \u003d ParserUtil.parseNickname(argMultimap.getValue(PREFIX_NICKNAME).orElse(\"\"));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wuzengfu"},"content":" Person person \u003d new Person(name, telegram, email, studentStatus, roleList, nickname);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"cth06-Github":2,"LowXiSi":10,"wuzengfu":5,"WinstonJin":2,"-":48}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"WinstonJin"},"content":" public static final Prefix PREFIX_TELEGRAM \u003d new Prefix(\"th/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":" public static final Prefix PREFIX_STUDENT_STATUS \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":" public static final Prefix PREFIX_ROLE \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"cth06-Github"},"content":" public static final Prefix PREFIX_NICKNAME \u003d new Prefix(\"nn/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"LowXiSi":1,"cth06-Github":1,"wuzengfu":1,"WinstonJin":1,"-":11}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_EMAIL,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" PREFIX_STUDENT_STATUS, PREFIX_ROLE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_EMAIL, PREFIX_STUDENT_STATUS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"WinstonJin"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM).isPresent()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"WinstonJin"},"content":" editPersonDescriptor.setTelegram(ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"LowXiSi"},"content":" if (argMultimap.getValue(PREFIX_STUDENT_STATUS).isPresent()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"LowXiSi"},"content":" editPersonDescriptor.setStudentStatus(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"LowXiSi"},"content":" ParserUtil.parseStudentStatus(argMultimap.getValue(PREFIX_STUDENT_STATUS).get()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" parseRolesForEdit(argMultimap.getAllValues(PREFIX_ROLE)).ifPresent(editPersonDescriptor::setRoles);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"LowXiSi"},"content":" * Parses {@code Collection\u003cString\u003e roles} into a {@code Set\u003cRole\u003e} if {@code roles} is non-empty.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"LowXiSi"},"content":" * If {@code roles} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"LowXiSi"},"content":" * {@code Set\u003cRole\u003e} containing zero roles.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"LowXiSi"},"content":" private Optional\u003cSet\u003cRole\u003e\u003e parseRolesForEdit(Collection\u003cString\u003e roles) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"LowXiSi"},"content":" assert roles !\u003d null;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LowXiSi"},"content":" if (roles.isEmpty()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"LowXiSi"},"content":" return Optional.of(ParserUtil.parseRoles(roles));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"LowXiSi":15,"wuzengfu":3,"WinstonJin":2,"-":65}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"WinstonJin"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"WinstonJin"},"content":" * Parses a {@code String telegram} into a {@code Telegram}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"WinstonJin"},"content":" * @throws ParseException if the given {@code telegram} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"WinstonJin"},"content":" public static Telegram parseTelegram(String telegram) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"WinstonJin"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"WinstonJin"},"content":" String trimmedTelegram \u003d telegram.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"WinstonJin"},"content":" if (!Telegram.isValidTelegram(trimmedTelegram)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"WinstonJin"},"content":" throw new ParseException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"WinstonJin"},"content":" return new Telegram(trimmedTelegram);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"LowXiSi"},"content":" public static StudentStatus parseStudentStatus(String studentStatus) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"LowXiSi"},"content":" requireNonNull(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"LowXiSi"},"content":" String trimmedStudentStatus \u003d studentStatus.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LowXiSi"},"content":" if (!StudentStatus.isValidStudentStatus(trimmedStudentStatus)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LowXiSi"},"content":" throw new ParseException(StudentStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"LowXiSi"},"content":" return new StudentStatus(trimmedStudentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"LowXiSi"},"content":" * Parses a {@code String role} into a {@code Role}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LowXiSi"},"content":" * @throws ParseException if the given {@code role} is invalid.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"LowXiSi"},"content":" public static Role parseRole(String role) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"LowXiSi"},"content":" requireNonNull(role);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"LowXiSi"},"content":" String trimmedRole \u003d role.trim();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"LowXiSi"},"content":" if (!Role.isValidRoleName(trimmedRole)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"wuzengfu"},"content":" throw new ParseException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"LowXiSi"},"content":" return new Role(trimmedRole);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"LowXiSi"},"content":" * Parses {@code Collection\u003cString\u003e roles} into a {@code Set\u003cRole\u003e}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"LowXiSi"},"content":" public static Set\u003cRole\u003e parseRoles(Collection\u003cString\u003e roles) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"LowXiSi"},"content":" requireNonNull(roles);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"wuzengfu"},"content":" final Set\u003cRole\u003e roleSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"LowXiSi"},"content":" for (String roleName : roles) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"LowXiSi"},"content":" roleSet.add(parseRole(roleName));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"wuzengfu"},"content":" return roleSet;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"cth06-Github"},"content":" * Parses a {@code String nickname} into a {@code Nickname}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"cth06-Github"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"cth06-Github"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"cth06-Github"},"content":" * @throws ParseException if the given {@code Nickname} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"cth06-Github"},"content":" public static Nickname parseNickname(String nickname) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"cth06-Github"},"content":" requireNonNull(nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"cth06-Github"},"content":" String trimmedNickname \u003d nickname.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"cth06-Github"},"content":" return new Nickname(trimmedNickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"LowXiSi":19,"cth06-Github":12,"wuzengfu":4,"WinstonJin":9,"-":93}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"WinstonJin"},"content":" private final Telegram telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" private final StudentStatus studentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wuzengfu"},"content":" private final Set\u003cRole\u003e roles \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"cth06-Github"},"content":" private final Nickname nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" public Person(Name name, Telegram telegram, Email email, StudentStatus studentStatus,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e roles, Nickname nickname) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wuzengfu"},"content":" requireAllNonNull(name, telegram, email, studentStatus, roles, nickname);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"WinstonJin"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" this.studentStatus \u003d studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" this.roles.addAll(roles);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"cth06-Github"},"content":" this.nickname \u003d nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"WinstonJin"},"content":" public Telegram getTelegram() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"WinstonJin"},"content":" return telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":" public StudentStatus getStudentStatus() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"LowXiSi"},"content":" return studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":" public Set\u003cRole\u003e getRoles() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"wuzengfu"},"content":" return Collections.unmodifiableSet(roles);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"cth06-Github"},"content":" public Nickname getNickname() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"cth06-Github"},"content":" return nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"WinstonJin"},"content":" \u0026\u0026 telegram.equals(otherPerson.telegram)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LowXiSi"},"content":" \u0026\u0026 studentStatus.equals(otherPerson.studentStatus)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"wuzengfu"},"content":" \u0026\u0026 roles.equals(otherPerson.roles)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"cth06-Github"},"content":" \u0026\u0026 nickname.equals(otherPerson.nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"wuzengfu"},"content":" return Objects.hash(name, telegram, email, studentStatus, roles, nickname);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"WinstonJin"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"LowXiSi"},"content":" .add(\"studentStatus\", studentStatus)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"LowXiSi"},"content":" .add(\"roles\", roles)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"cth06-Github"},"content":" .add(\"nickname\", nickname)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"cth06-Github":7,"LowXiSi":10,"wuzengfu":7,"WinstonJin":6,"-":97}},{"path":"src/main/java/seedu/address/model/person/StudentStatus.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LowXiSi"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"LowXiSi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":" * Represents a Person\u0027s student status in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidStudentStatus(String)}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"public class StudentStatus {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Student statuses must take one of the values below: \\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":" + \"undergraduate x, where x: An integer value between 1 and 6 inclusive\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" + \"masters\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":" + \"phd\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":" public static final String VALIDATION_REGEX \u003d \"undergraduate 1|undergraduate 2|undergraduate 3|\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":" + \"undergraduate 4|undergraduate 5|undergraduate 6|masters|phd\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":" public final String value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" * Constructs an {@code StudentStatus}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" * @param studentStatus A valid student status.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" public StudentStatus(String studentStatus) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" requireNonNull(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" checkArgument(isValidStudentStatus(studentStatus), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" value \u003d studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" public static boolean isValidStudentStatus(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" return value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"LowXiSi"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" if (!(other instanceof StudentStatus)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":" StudentStatus otherStudentStatus \u003d (StudentStatus) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"LowXiSi"},"content":" return value.equals(otherStudentStatus.value);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"LowXiSi"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"LowXiSi"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"LowXiSi"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"LowXiSi":65}},{"path":"src/main/java/seedu/address/model/person/Telegram.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"WinstonJin"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"WinstonJin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"WinstonJin"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"WinstonJin"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"WinstonJin"},"content":" * Represents a Person\u0027s telegram handle in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"WinstonJin"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegram(String)}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"WinstonJin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"WinstonJin"},"content":"public class Telegram {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"WinstonJin"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" \"Telegram handles should not contain @, and it should have a length of 3 to 29 characters inclusive\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":" public static final String VALIDATION_REGEX \u003d \"^[A-Za-z0-9_]{3,29}$\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"WinstonJin"},"content":" public final String value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"WinstonJin"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"WinstonJin"},"content":" * Constructs a {@code Telegram}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"WinstonJin"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"WinstonJin"},"content":" * @param telegram A valid telegram handle.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"WinstonJin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"WinstonJin"},"content":" public Telegram(String telegram) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"WinstonJin"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"WinstonJin"},"content":" checkArgument(isValidTelegram(telegram), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"WinstonJin"},"content":" value \u003d telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"WinstonJin"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"WinstonJin"},"content":" * Returns true if a given string is a valid telegram handle.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"WinstonJin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"WinstonJin"},"content":" public static boolean isValidTelegram(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"WinstonJin"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"WinstonJin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"WinstonJin"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"WinstonJin"},"content":" return value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"WinstonJin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"WinstonJin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"WinstonJin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"WinstonJin"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"WinstonJin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"WinstonJin"},"content":" if (!(other instanceof Telegram)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"WinstonJin"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"WinstonJin"},"content":" Telegram otherTelegram \u003d (Telegram) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"WinstonJin"},"content":" return value.equals(otherTelegram.value);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"WinstonJin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"WinstonJin"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"WinstonJin"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"WinstonJin"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"LowXiSi":2,"WinstonJin":59}},{"path":"src/main/java/seedu/address/model/tag/Nickname.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cth06-Github"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"cth06-Github"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"cth06-Github"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"cth06-Github"},"content":" * Represents a Nickname in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"cth06-Github"},"content":" * Guarantees: immutable}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"cth06-Github"},"content":"public class Nickname {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"cth06-Github"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Nicknames should not be empty\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"cth06-Github"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"cth06-Github"},"content":" * Constructs a {@code Nickname}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"cth06-Github"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"cth06-Github"},"content":" * @param nickname A valid nickname.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"cth06-Github"},"content":" public Nickname(String nickname) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"cth06-Github"},"content":" requireNonNull(nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"cth06-Github"},"content":" this.value \u003d nickname.trim(); // in ParserUtil.java also have trim()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"cth06-Github"},"content":" * Returns true if a given nickname is empty.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"cth06-Github"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"cth06-Github"},"content":" return value.isEmpty();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"cth06-Github"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"cth06-Github"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"cth06-Github"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"cth06-Github"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"cth06-Github"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"cth06-Github"},"content":" if (!(other instanceof Nickname)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"cth06-Github"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"cth06-Github"},"content":" Nickname otherNickname \u003d (Nickname) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"cth06-Github"},"content":" return value.equals(otherNickname.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"cth06-Github"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"cth06-Github"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"cth06-Github"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"cth06-Github"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"cth06-Github"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"cth06-Github"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"cth06-Github"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"cth06-Github":58}},{"path":"src/main/java/seedu/address/model/tag/Role.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":" * Represents a Role in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wuzengfu"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidRoleName(String)}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":"public class Role {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Role must be one of the following: \\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wuzengfu"},"content":" + \"1. President\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wuzengfu"},"content":" + \"2. Vice President\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wuzengfu"},"content":" + \"3. Admin\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wuzengfu"},"content":" + \"4. Marketing\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":" + \"5. Events (internal)\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wuzengfu"},"content":" + \"6. Events (external)\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":" + \"7. External Relations\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wuzengfu"},"content":" public static final String[] AVAILABLE_ROLES \u003d {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wuzengfu"},"content":" \"President\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wuzengfu"},"content":" \"Vice President\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wuzengfu"},"content":" \"Admin\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wuzengfu"},"content":" \"Marketing\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wuzengfu"},"content":" \"Events (internal)\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wuzengfu"},"content":" \"Events (external)\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wuzengfu"},"content":" \"External Relations\"};","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wuzengfu"},"content":" public final String roleName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wuzengfu"},"content":" * Constructs a {@code Role}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wuzengfu"},"content":" * @param roleName A valid role name.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" public Role(String roleName) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wuzengfu"},"content":" requireNonNull(roleName);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" checkArgument(isValidRoleName(roleName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":" this.roleName \u003d roleName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":" * Returns true if a given string is a valid role name.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wuzengfu"},"content":" public static boolean isValidRoleName(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wuzengfu"},"content":" requireNonNull(test);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wuzengfu"},"content":" return Arrays.asList(AVAILABLE_ROLES).contains(test);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wuzengfu"},"content":" if (!(other instanceof Role)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"wuzengfu"},"content":" Role otherRole \u003d (Role) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"wuzengfu"},"content":" return roleName.equals(otherRole.roleName);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"wuzengfu"},"content":" return roleName.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"wuzengfu"},"content":" return \u0027[\u0027 + roleName + \u0027]\u0027;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"LowXiSi":1,"wuzengfu":36,"-":42}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"WinstonJin"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"WinstonJin"},"content":" new Person(new Name(\"Alex Yeoh\"), new Telegram(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 1\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"President\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"WinstonJin"},"content":" new Person(new Name(\"Bernice Yu\"), new Telegram(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 3\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"President\", \"Admin\"), new Nickname(\"\u003cnn space\u003e\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"WinstonJin"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Telegram(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"masters\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Marketing\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"WinstonJin"},"content":" new Person(new Name(\"David Li\"), new Telegram(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 4\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Admin\"), new Nickname(\"\u003cnn space\u003e\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"WinstonJin"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Telegram(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"phd\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Events (internal)\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"WinstonJin"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Telegram(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 4\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"External Relations\"), new Nickname(\"\"))","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" public static Set\u003cRole\u003e getRoleSet(String... strings) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wuzengfu"},"content":" .map(Role::new)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"LowXiSi":14,"cth06-Github":1,"wuzengfu":2,"WinstonJin":7,"-":37}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"WinstonJin"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"WinstonJin"},"content":" private final String telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" private final String studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" private final List\u003cJsonAdaptedRole\u003e roles \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"cth06-Github"},"content":" private final String nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"WinstonJin"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"telegram\") String telegram,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"studentStatus\") String studentStatus,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":" @JsonProperty(\"roles\") List\u003cJsonAdaptedRole\u003e roles,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" @JsonProperty(\"nickname\") String nickname) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"WinstonJin"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" this.studentStatus \u003d studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" if (roles !\u003d null) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" this.roles.addAll(roles);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"cth06-Github"},"content":" this.nickname \u003d nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"WinstonJin"},"content":" telegram \u003d source.getTelegram().value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"LowXiSi"},"content":" studentStatus \u003d source.getStudentStatus().value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"LowXiSi"},"content":" roles.addAll(source.getRoles().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" .map(JsonAdaptedRole::new)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"cth06-Github"},"content":" nickname \u003d source.getNickname().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"wuzengfu"},"content":" final List\u003cRole\u003e personRoles \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"LowXiSi"},"content":" for (JsonAdaptedRole role : roles) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"LowXiSi"},"content":" personRoles.add(role.toModelType());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"WinstonJin"},"content":" if (telegram \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"WinstonJin"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"WinstonJin"},"content":" Telegram.class.getSimpleName()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"WinstonJin"},"content":" if (!Telegram.isValidTelegram(telegram)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"WinstonJin"},"content":" throw new IllegalValueException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"WinstonJin"},"content":" final Telegram modelTelegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LowXiSi"},"content":" if (studentStatus \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LowXiSi"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"LowXiSi"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, StudentStatus.class.getSimpleName()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"LowXiSi"},"content":" if (!StudentStatus.isValidStudentStatus(studentStatus)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"LowXiSi"},"content":" throw new IllegalValueException(StudentStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"LowXiSi"},"content":" final StudentStatus modelstudentStatus \u003d new StudentStatus(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"wuzengfu"},"content":" final Set\u003cRole\u003e modelRoles \u003d new HashSet\u003c\u003e(personRoles);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"cth06-Github"},"content":" final Nickname modelNickname \u003d new Nickname(nickname); // Nickname can be anything","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"wuzengfu"},"content":" return new Person(modelName, modelTelegram, modelEmail, modelstudentStatus, modelRoles, modelNickname);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"LowXiSi":20,"cth06-Github":5,"wuzengfu":4,"WinstonJin":11,"-":76}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedRole.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LowXiSi"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"LowXiSi"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"LowXiSi"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":" * Jackson-friendly version of {@link Role}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"class JsonAdaptedRole {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" private final String roleName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":" * Constructs a {@code JsonAdaptedRole} with the given {@code roleName}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":" @JsonCreator","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":" public JsonAdaptedRole(String roleName) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":" this.roleName \u003d roleName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" * Converts a given {@code Role} into this class for Jackson use.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" public JsonAdaptedRole(Role source) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" roleName \u003d source.roleName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" @JsonValue","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" public String getRoleName() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" return roleName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" * Converts this Jackson-friendly adapted role object into the model\u0027s {@code Role} object.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" *","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted role.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":" public Role toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" if (!Role.isValidRoleName(roleName)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" throw new IllegalValueException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" return new Role(roleName);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"LowXiSi":48}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"WinstonJin"},"content":" private Label telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" private Label studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" private FlowPane roles;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"cth06-Github"},"content":" @FXML","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"cth06-Github"},"content":" private FlowPane nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"WinstonJin"},"content":" telegram.setText(person.getTelegram().value);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" studentStatus.setText(person.getStudentStatus().value);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"LowXiSi"},"content":" person.getRoles().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.roleName))","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"LowXiSi"},"content":" .forEach(tag -\u003e roles.getChildren().add(new Label(tag.roleName)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"cth06-Github"},"content":" String nicknameObtained \u003d person.getNickname().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"cth06-Github"},"content":" if (!nicknameObtained.isEmpty()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"cth06-Github"},"content":" nickname.getChildren().add(new Label(nicknameObtained));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"LowXiSi":5,"cth06-Github":7,"wuzengfu":1,"WinstonJin":2,"-":51}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"cth06-Github"},"content":" -fx-background-color: #3e7b91; /*change colour of the tag*/","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false}],"authorContributionMap":{"cth06-Github":1,"-":351}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" \u003cFlowPane fx:id\u003d\"roles\" /\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"WinstonJin"},"content":" \u003cLabel fx:id\u003d\"telegram\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$telegram\" /\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" \u003cLabel fx:id\u003d\"studentStatus\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$studentStatus\" /\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"cth06-Github"},"content":" \u003cFlowPane fx:id\u003d\"nickname\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"LowXiSi":2,"cth06-Github":1,"WinstonJin":1,"-":33}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"WinstonJin"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + TELEGRAM_DESC_AMY","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"LowXiSi"},"content":" + EMAIL_DESC_AMY + STUDENT_STATUS_DESC_AMY + ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"wuzengfu"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"LowXiSi":4,"wuzengfu":1,"WinstonJin":1,"-":170}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"WinstonJin"},"content":" public static final String VALID_TELEGRAM_AMY \u003d \"11111111\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"WinstonJin"},"content":" public static final String VALID_TELEGRAM_BOB \u003d \"22222222\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" public static final String VALID_ROLE_PRESIDENT \u003d \"President\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" public static final String VALID_ROLE_ADMIN \u003d \"Admin\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" public static final String VALID_STUDENT_STATUS_AMY \u003d \"undergraduate 1\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" public static final String VALID_STUDENT_STATUS_BOB \u003d \"masters\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"WinstonJin"},"content":" public static final String TELEGRAM_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"WinstonJin"},"content":" public static final String TELEGRAM_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" public static final String STUDENT_STATUS_DESC_AMY \u003d \" \" + PREFIX_STUDENT_STATUS + VALID_STUDENT_STATUS_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" public static final String STUDENT_STATUS_DESC_BOB \u003d \" \" + PREFIX_STUDENT_STATUS + VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" public static final String ROLE_DESC_ADMIN \u003d \" \" + PREFIX_ROLE + VALID_ROLE_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LowXiSi"},"content":" public static final String ROLE_DESC_PRESIDENT \u003d \" \" + PREFIX_ROLE + VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" public static final String INVALID_TELEGRAM_DESC \u003d \" \" + PREFIX_TELEGRAM + \"@911\"; // \u0027@\u0027 not allowed in telegrams","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" public static final String INVALID_STUDENT_STATUS_DESC \u003d \" \" + PREFIX_STUDENT_STATUS; // empty string not allowed","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" public static final String INVALID_ROLE_DESC \u003d \" \" + PREFIX_ROLE + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"wuzengfu"},"content":" .withTelegram(VALID_TELEGRAM_AMY).withEmail(VALID_EMAIL_AMY).withStudentStatus(VALID_STUDENT_STATUS_AMY)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"wuzengfu"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withEmail(VALID_EMAIL_BOB).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT, VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"LowXiSi":15,"wuzengfu":3,"WinstonJin":4,"-":106}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"WinstonJin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"WinstonJin"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"LowXiSi":3,"WinstonJin":2,"-":179}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"WinstonJin"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withStudentStatus(VALID_STUDENT_STATUS_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":" + editPersonDescriptor.getName().orElse(null) + \", telegram\u003d\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"WinstonJin"},"content":" + editPersonDescriptor.getTelegram().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"LowXiSi"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", studentStatus\u003d\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"LowXiSi"},"content":" + editPersonDescriptor.getStudentStatus().orElse(null) + \", roles\u003d\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"LowXiSi"},"content":" + editPersonDescriptor.getRoles().orElse(null) + \", nickname\u003d\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"cth06-Github"},"content":" + editPersonDescriptor.getNickname().orElse(null) + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"LowXiSi":10,"cth06-Github":1,"WinstonJin":2,"-":59}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ROLE_DESC;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_STUDENT_STATUS_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"WinstonJin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"WinstonJin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"WinstonJin"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN, new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"LowXiSi"},"content":" // multiple roles - all accepted","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"LowXiSi"},"content":" Person expectedPersonMultipleRoles \u003d new PersonBuilder(BOB).withRoles(VALID_ROLE_ADMIN, VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":" NAME_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB + STUDENT_STATUS_DESC_BOB + ROLE_DESC_PRESIDENT","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"LowXiSi"},"content":" new AddCommand(expectedPersonMultipleRoles));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"LowXiSi"},"content":" public void parse_repeatedNonRoleValue_failure() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"WinstonJin"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LowXiSi"},"content":" // multiple telegrams","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"WinstonJin"},"content":" assertParseFailure(parser, TELEGRAM_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"WinstonJin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"LowXiSi"},"content":" // multiple student statuses","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, STUDENT_STATUS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"LowXiSi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"WinstonJin"},"content":" validExpectedPersonString + TELEGRAM_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"LowXiSi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_EMAIL,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"LowXiSi"},"content":" PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"LowXiSi"},"content":" // invalid telegram","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"WinstonJin"},"content":" assertParseFailure(parser, INVALID_TELEGRAM_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"WinstonJin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"LowXiSi"},"content":" // invalid student status","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, INVALID_STUDENT_STATUS_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"LowXiSi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"LowXiSi"},"content":" // invalid telegram","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"WinstonJin"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_TELEGRAM_DESC,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"WinstonJin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"LowXiSi"},"content":" // invalid student status","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_STUDENT_STATUS_DESC,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"LowXiSi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"LowXiSi"},"content":" // zero roles","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"LowXiSi"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"LowXiSi"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + TELEGRAM_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_AMY + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, VALID_NAME_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"LowXiSi"},"content":" // missing telegram prefix","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_TELEGRAM_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"LowXiSi"},"content":" + VALID_STUDENT_STATUS_BOB + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"LowXiSi"},"content":" // missing role prefix","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"LowXiSi"},"content":" + VALID_ROLE_PRESIDENT,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_TELEGRAM_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"LowXiSi"},"content":" + VALID_STUDENT_STATUS_BOB + VALID_ROLE_PRESIDENT,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"wuzengfu"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"WinstonJin"},"content":" // invalid telegram","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_TELEGRAM_DESC + EMAIL_DESC_BOB + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN, Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"wuzengfu"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + INVALID_EMAIL_DESC + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"LowXiSi"},"content":" // invalid student status","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"wuzengfu"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB + INVALID_STUDENT_STATUS_DESC","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN, StudentStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"LowXiSi"},"content":" // invalid role","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"wuzengfu"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"LowXiSi"},"content":" + INVALID_ROLE_DESC + VALID_ROLE_ADMIN, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"WinstonJin"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"LowXiSi"},"content":" + INVALID_STUDENT_STATUS_DESC + ROLE_DESC_PRESIDENT,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + TELEGRAM_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"LowXiSi":68,"wuzengfu":5,"WinstonJin":13,"-":124}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ROLE_DESC;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_STUDENT_STATUS_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"WinstonJin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"WinstonJin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"WinstonJin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"WinstonJin"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":" private static final String ROLE_EMPTY \u003d \" \" + PREFIX_ROLE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"WinstonJin"},"content":" assertParseFailure(parser, \"1\" + INVALID_TELEGRAM_DESC, Telegram.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"LowXiSi"},"content":" // invalid student status","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + INVALID_STUDENT_STATUS_DESC, StudentStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + INVALID_ROLE_DESC, Role.MESSAGE_CONSTRAINTS); // invalid role","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"WinstonJin"},"content":" assertParseFailure(parser, \"1\" + INVALID_TELEGRAM_DESC + EMAIL_DESC_AMY, Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + ROLE_DESC_ADMIN + ROLE_DESC_PRESIDENT + ROLE_EMPTY, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + ROLE_DESC_ADMIN + ROLE_EMPTY + ROLE_DESC_PRESIDENT, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + ROLE_EMPTY + ROLE_DESC_ADMIN + ROLE_DESC_PRESIDENT, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"wuzengfu"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_STUDENT_STATUS_AMY","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"WinstonJin"},"content":" + VALID_TELEGRAM_AMY, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"LowXiSi"},"content":" String userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_BOB + ROLE_DESC_PRESIDENT","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"LowXiSi"},"content":" + EMAIL_DESC_AMY + STUDENT_STATUS_DESC_AMY + NAME_DESC_AMY + ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"wuzengfu"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withEmail(VALID_EMAIL_AMY).withStudentStatus(VALID_STUDENT_STATUS_AMY)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT, VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"WinstonJin"},"content":" String userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"WinstonJin"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"WinstonJin"},"content":" // telegram","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"WinstonJin"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"WinstonJin"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTelegram(VALID_TELEGRAM_AMY).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"LowXiSi"},"content":" // student status","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"LowXiSi"},"content":" userInput \u003d targetIndex.getOneBased() + STUDENT_STATUS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"LowXiSi"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withStudentStatus(VALID_STUDENT_STATUS_AMY).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"LowXiSi"},"content":" userInput \u003d targetIndex.getOneBased() + ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"LowXiSi"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"LowXiSi"},"content":" // AddCommandParserTest#parse_repeatedNonRoleValue_failure()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"WinstonJin"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_TELEGRAM_DESC + TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"WinstonJin"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"WinstonJin"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_BOB + INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"WinstonJin"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"wuzengfu"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_AMY + STUDENT_STATUS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_ADMIN + TELEGRAM_DESC_AMY + STUDENT_STATUS_DESC_AMY + EMAIL_DESC_AMY + ROLE_DESC_ADMIN","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"LowXiSi"},"content":" + TELEGRAM_DESC_BOB + STUDENT_STATUS_DESC_BOB + EMAIL_DESC_BOB + ROLE_DESC_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"wuzengfu"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM, PREFIX_EMAIL, PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"wuzengfu"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_TELEGRAM_DESC + INVALID_STUDENT_STATUS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"wuzengfu"},"content":" + INVALID_TELEGRAM_DESC + INVALID_STUDENT_STATUS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"wuzengfu"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM, PREFIX_EMAIL, PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"LowXiSi"},"content":" public void parse_resetRoles_failure() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"LowXiSi"},"content":" String userInput \u003d INDEX_THIRD_PERSON.getOneBased() + ROLE_EMPTY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"wuzengfu"},"content":" assertParseFailure(parser, userInput, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"LowXiSi":35,"wuzengfu":11,"WinstonJin":16,"-":145}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"WinstonJin"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"WinstonJin"},"content":" private static final String INVALID_TELEGRAM \u003d \"+651234\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" private static final String INVALID_STUDENT_STATUS \u003d \"undergraduate 7\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" private static final String INVALID_ROLE \u003d \"#friend\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"WinstonJin"},"content":" private static final String VALID_TELEGRAM \u003d \"123456\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" private static final String VALID_STUDENT_STATUS \u003d \"undergraduate 3\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" private static final String VALID_ROLE_1 \u003d \"Admin\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" private static final String VALID_ROLE_2 \u003d \"President\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"WinstonJin"},"content":" public void parseTelegram_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"WinstonJin"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTelegram((String) null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"WinstonJin"},"content":" public void parseTelegram_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"WinstonJin"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTelegram(INVALID_TELEGRAM));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"WinstonJin"},"content":" public void parseTelegram_validValueWithoutWhitespace_returnsTelegram() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"WinstonJin"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"WinstonJin"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(VALID_TELEGRAM));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"WinstonJin"},"content":" public void parseTelegram_validValueWithWhitespace_returnsTrimmedTelegram() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"WinstonJin"},"content":" String telegramWithWhitespace \u003d WHITESPACE + VALID_TELEGRAM + WHITESPACE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"WinstonJin"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"WinstonJin"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(telegramWithWhitespace));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseStudentStatus((String) null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"LowXiSi"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseStudentStatus(INVALID_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"LowXiSi"},"content":" StudentStatus expectedAddress \u003d new StudentStatus(VALID_STUDENT_STATUS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"LowXiSi"},"content":" assertEquals(expectedAddress, ParserUtil.parseStudentStatus(VALID_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"LowXiSi"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_STUDENT_STATUS + WHITESPACE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"LowXiSi"},"content":" StudentStatus expectedAddress \u003d new StudentStatus(VALID_STUDENT_STATUS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"LowXiSi"},"content":" assertEquals(expectedAddress, ParserUtil.parseStudentStatus(addressWithWhitespace));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"LowXiSi"},"content":" public void parseRole_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRole(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"LowXiSi"},"content":" public void parseRole_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"LowXiSi"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseRole(INVALID_ROLE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"LowXiSi"},"content":" public void parseRole_validValueWithoutWhitespace_returnsRole() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"LowXiSi"},"content":" Role expectedRole \u003d new Role(VALID_ROLE_1);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"LowXiSi"},"content":" assertEquals(expectedRole, ParserUtil.parseRole(VALID_ROLE_1));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"LowXiSi"},"content":" public void parseRole_validValueWithWhitespace_returnsTrimmedRole() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"LowXiSi"},"content":" String roleWithWhitespace \u003d WHITESPACE + VALID_ROLE_1 + WHITESPACE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"LowXiSi"},"content":" Role expectedRole \u003d new Role(VALID_ROLE_1);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"LowXiSi"},"content":" assertEquals(expectedRole, ParserUtil.parseRole(roleWithWhitespace));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"LowXiSi"},"content":" public void parseRoles_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRoles(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"LowXiSi"},"content":" public void parseRoles_collectionWithInvalidRoles_throwsParseException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"LowXiSi"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseRoles(Arrays.asList(VALID_ROLE_1, INVALID_ROLE)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"LowXiSi"},"content":" public void parseRoles_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"LowXiSi"},"content":" assertTrue(ParserUtil.parseRoles(Collections.emptyList()).isEmpty());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"LowXiSi"},"content":" public void parseRoles_collectionWithValidRoles_returnsRoleSet() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e actualRoleSet \u003d ParserUtil.parseRoles(Arrays.asList(VALID_ROLE_1, VALID_ROLE_2));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e expectedRoleSet \u003d new HashSet\u003cRole\u003e(Arrays.asList(new Role(VALID_ROLE_1), new Role(VALID_ROLE_2)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"wuzengfu"},"content":" assertEquals(expectedRoleSet, actualRoleSet);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"LowXiSi":33,"wuzengfu":2,"WinstonJin":14,"-":147}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LowXiSi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"LowXiSi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"LowXiSi":6,"-":104}},{"path":"src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"WinstonJin"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withTelegram(\"12345\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"LowXiSi"},"content":" .withEmail(\"alice@email.com\").withStudentStatus(\"undergraduate 1\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"LowXiSi":1,"WinstonJin":1,"-":83}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getRoles().remove(0));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"WinstonJin"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" .withStudentStatus(VALID_STUDENT_STATUS_BOB).withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"WinstonJin"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"WinstonJin"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"LowXiSi"},"content":" // different student status -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"LowXiSi"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"LowXiSi"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"WinstonJin"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", telegram\u003d\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"wuzengfu"},"content":" + ALICE.getTelegram() + \", email\u003d\" + ALICE.getEmail() + \", studentStatus\u003d\" + ALICE.getStudentStatus()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"LowXiSi"},"content":" + \", roles\u003d\" + ALICE.getRoles() + \", nickname\u003d\" + ALICE.getNickname() + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"LowXiSi":9,"wuzengfu":1,"WinstonJin":4,"-":86}},{"path":"src/test/java/seedu/address/model/person/StudentStatusTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LowXiSi"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"LowXiSi"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"LowXiSi"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"public class StudentStatusTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e new StudentStatus(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":" public void constructor_invalidStudentStatus_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":" String invalidStudentStatus \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new StudentStatus(invalidStudentStatus));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" public void isValidStudentStatus() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" // null student status","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e StudentStatus.isValidStudentStatus(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" // invalid student statuses","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" assertFalse(StudentStatus.isValidStudentStatus(\"phd 2\")); // phd with year","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" assertFalse(StudentStatus.isValidStudentStatus(\"undergraduate 10\")); // year \u003e 6","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" // valid student statuses","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" assertTrue(StudentStatus.isValidStudentStatus(\"undergraduate 3\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" assertTrue(StudentStatus.isValidStudentStatus(\"phd\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" assertTrue(StudentStatus.isValidStudentStatus(\"masters\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" StudentStatus studentStatus \u003d new StudentStatus(\"undergraduate 1\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" assertTrue(studentStatus.equals(new StudentStatus(\"undergraduate 1\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" assertTrue(studentStatus.equals(studentStatus));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" assertFalse(studentStatus.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"LowXiSi"},"content":" assertFalse(studentStatus.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" assertFalse(studentStatus.equals(new StudentStatus(\"phd\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"LowXiSi":56}},{"path":"src/test/java/seedu/address/model/person/TelegramTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"WinstonJin"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"WinstonJin"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"WinstonJin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"WinstonJin"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"WinstonJin"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"WinstonJin"},"content":"public class TelegramTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"WinstonJin"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"WinstonJin"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"WinstonJin"},"content":" assertThrows(NullPointerException.class, () -\u003e new Telegram(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"WinstonJin"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"WinstonJin"},"content":" public void constructor_invalidTelegram_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"WinstonJin"},"content":" String invalidTelegram \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"WinstonJin"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Telegram(invalidTelegram));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"WinstonJin"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"WinstonJin"},"content":" public void isValidTelegram() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" // null telegram","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"WinstonJin"},"content":" assertThrows(NullPointerException.class, () -\u003e Telegram.isValidTelegram(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" // invalid telegrams","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"WinstonJin"},"content":" assertFalse(Telegram.isValidTelegram(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"WinstonJin"},"content":" assertFalse(Telegram.isValidTelegram(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"WinstonJin"},"content":" assertFalse(Telegram.isValidTelegram(\"91\")); // less than 3 numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"WinstonJin"},"content":" assertFalse(Telegram.isValidTelegram(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" assertFalse(Telegram.isValidTelegram(\"@93121534\")); // contains @","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" // valid telegrams","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"WinstonJin"},"content":" assertTrue(Telegram.isValidTelegram(\"911\")); // exactly 3 numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"WinstonJin"},"content":" assertTrue(Telegram.isValidTelegram(\"93121534\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"WinstonJin"},"content":" assertTrue(Telegram.isValidTelegram(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" assertTrue(Telegram.isValidTelegram(\"phone\")); // non-numeric","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" assertTrue(Telegram.isValidTelegram(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"WinstonJin"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"WinstonJin"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" Telegram telegram \u003d new Telegram(\"999\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"WinstonJin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" assertTrue(telegram.equals(new Telegram(\"999\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"WinstonJin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":" assertTrue(telegram.equals(telegram));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"WinstonJin"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" assertFalse(telegram.equals(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"WinstonJin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":" assertFalse(telegram.equals(5.0f));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"WinstonJin"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"LowXiSi"},"content":" assertFalse(telegram.equals(new Telegram(\"995\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"WinstonJin"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"LowXiSi":12,"WinstonJin":49}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"LowXiSi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"LowXiSi":6,"-":171}},{"path":"src/test/java/seedu/address/model/tag/RoleTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wuzengfu"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wuzengfu"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wuzengfu"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":"public class RoleTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":" assertThrows(NullPointerException.class, () -\u003e new Role(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":" public void constructor_invalidRoleName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":" String invalidRoleName \u003d \"friends\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Role(invalidRoleName));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wuzengfu"},"content":" public void isValidRoleName() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wuzengfu"},"content":" // null tag name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wuzengfu"},"content":" assertThrows(NullPointerException.class, () -\u003e Role.isValidRoleName(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wuzengfu"},"content":" // invalid tag name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wuzengfu"},"content":" assertFalse(Role.isValidRoleName(\"friends\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wuzengfu"},"content":" assertFalse(Role.isValidRoleName(\" \"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wuzengfu"},"content":" assertFalse(Role.isValidRoleName(\"admin\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wuzengfu"},"content":" assertFalse(Role.isValidRoleName(\"marketing\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wuzengfu"},"content":" // valid tag name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"President\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Vice President\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Admin\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Marketing\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Events (internal)\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Events (external)\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"External Relations\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wuzengfu"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"LowXiSi":3,"wuzengfu":40}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wuzengfu"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wuzengfu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wuzengfu"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.model.util.SampleDataUtil.getRoleSet;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wuzengfu"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":" private Person[] samplePersons \u003d new Person[] {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" new Person(new Name(\"Alex Yeoh\"), new Telegram(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 1\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"President\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" new Person(new Name(\"Bernice Yu\"), new Telegram(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 3\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"President\", \"Admin\"), new Nickname(\"\u003cnn space\u003e\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Telegram(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"masters\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Marketing\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" new Person(new Name(\"David Li\"), new Telegram(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 4\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Admin\"), new Nickname(\"\u003cnn space\u003e\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Telegram(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"phd\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Events (internal)\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Telegram(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 4\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"External Relations\"), new Nickname(\"\"))","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" };","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" public void getRoleSet_success() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wuzengfu"},"content":" Role[] roles \u003d {new Role(\"Admin\"), new Role(\"Vice President\")};","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" assertTrue(List.of(roles).containsAll(getRoleSet(\"Admin\", \"Vice President\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" assertTrue(List.of(roles).containsAll(getRoleSet(\"Vice President\", \"Admin\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" assertTrue(List.of(roles).containsAll(getRoleSet(\"Vice President\", \"Admin\", \"Admin\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wuzengfu"},"content":" public void getSamplePersons_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wuzengfu"},"content":" assertTrue(List.of(samplePersons).containsAll(List.of(SampleDataUtil.getSamplePersons())));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wuzengfu"},"content":" public void getSampleAddressBook_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wuzengfu"},"content":" for (Person samplePerson : samplePersons) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"wuzengfu"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"wuzengfu"},"content":" assertEquals(sampleAb, SampleDataUtil.getSampleAddressBook());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"wuzengfu"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"LowXiSi":25,"wuzengfu":40}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" private static final String INVALID_TELEGRAM \u003d \"+651234\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" private static final String INVALID_STUDENT_STATUS \u003d \" \";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" private static final String INVALID_ROLES \u003d \"Freeloader\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" private static final String VALID_TELEGRAM \u003d BENSON.getTelegram().toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" private static final String VALID_STUDENT_STATUS \u003d BENSON.getStudentStatus().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" private static final List\u003cJsonAdaptedRole\u003e VALID_ROLES \u003d BENSON.getRoles().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" .map(JsonAdaptedRole::new)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"cth06-Github"},"content":" private static final String VALID_NICKNAME \u003d BENSON.getNickname().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_TELEGRAM, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_TELEGRAM, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"WinstonJin"},"content":" public void toModelType_invalidTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_TELEGRAM, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":" String expectedMessage \u003d Telegram.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"WinstonJin"},"content":" public void toModelType_nullTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"wuzengfu"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"WinstonJin"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Telegram.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LowXiSi"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM, INVALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"LowXiSi"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM, null, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"LowXiSi"},"content":" public void toModelType_invalidStudentStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"LowXiSi"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM, VALID_EMAIL, INVALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"LowXiSi"},"content":" String expectedMessage \u003d StudentStatus.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LowXiSi"},"content":" public void toModelType_nullStudentStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LowXiSi"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM, VALID_EMAIL, null,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"LowXiSi"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, StudentStatus.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"LowXiSi"},"content":" public void toModelType_invalidRoles_throwsIllegalValueException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"LowXiSi"},"content":" List\u003cJsonAdaptedRole\u003e invalidRoles \u003d new ArrayList\u003c\u003e(VALID_ROLES);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"LowXiSi"},"content":" invalidRoles.add(new JsonAdaptedRole(INVALID_ROLES));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"LowXiSi"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"LowXiSi"},"content":" invalidRoles, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"LowXiSi":34,"cth06-Github":1,"wuzengfu":1,"WinstonJin":3,"-":81}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"WinstonJin"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"WinstonJin"},"content":" descriptor.setTelegram(person.getTelegram());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" descriptor.setStudentStatus(person.getStudentStatus());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" descriptor.setRoles(person.getRoles());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"WinstonJin"},"content":" * Sets the {@code Telegram} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"WinstonJin"},"content":" public EditPersonDescriptorBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"WinstonJin"},"content":" descriptor.setTelegram(new Telegram(telegram));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"LowXiSi"},"content":" * Sets the {@code StudentStatus} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"LowXiSi"},"content":" public EditPersonDescriptorBuilder withStudentStatus(String studentStatus) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"LowXiSi"},"content":" descriptor.setStudentStatus(new StudentStatus(studentStatus));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"LowXiSi"},"content":" * Parses the {@code roles} into a {@code Set\u003cRole\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LowXiSi"},"content":" public EditPersonDescriptorBuilder withRoles(String... roles) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e roleSet \u003d Stream.of(roles).map(Role::new).collect(Collectors.toSet());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"LowXiSi"},"content":" descriptor.setRoles(roleSet);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"LowXiSi":10,"wuzengfu":2,"WinstonJin":5,"-":71}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wuzengfu"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"WinstonJin"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"85355255\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" public static final String DEFAULT_STUDENT_STATUS \u003d \"undergraduate 1\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" public static final String[] DEFAULT_ROLES \u003d {\"Admin\"};","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"cth06-Github"},"content":" public static final String DEFAULT_NICKNAME \u003d \"\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" private StudentStatus studentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wuzengfu"},"content":" private Set\u003cRole\u003e roles;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"cth06-Github"},"content":" private Nickname nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" telegram \u003d new Telegram(DEFAULT_TELEGRAM);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" studentStatus \u003d new StudentStatus(DEFAULT_STUDENT_STATUS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" roles \u003d new HashSet\u003c\u003e(Arrays.stream(DEFAULT_ROLES).map(Role::new).toList());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"cth06-Github"},"content":" nickname \u003d new Nickname(DEFAULT_NICKNAME);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" telegram \u003d personToCopy.getTelegram();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" studentStatus \u003d personToCopy.getStudentStatus();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" roles \u003d new HashSet\u003c\u003e(personToCopy.getRoles());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"cth06-Github"},"content":" nickname \u003d personToCopy.getNickname();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"LowXiSi"},"content":" * Parses the {@code roles} into a {@code Set\u003cRole\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"LowXiSi"},"content":" public PersonBuilder withRoles(String ... tags) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"LowXiSi"},"content":" this.roles \u003d SampleDataUtil.getRoleSet(tags);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LowXiSi"},"content":" public PersonBuilder withStudentStatus(String studentStatus) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LowXiSi"},"content":" this.studentStatus \u003d new StudentStatus(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"WinstonJin"},"content":" * Sets the {@code Telegram} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"LowXiSi"},"content":" public PersonBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"LowXiSi"},"content":" this.telegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"cth06-Github"},"content":" * Sets the {@code Nickname} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"cth06-Github"},"content":" public PersonBuilder withNickname(String nickname) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"cth06-Github"},"content":" this.nickname \u003d new Nickname(nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"cth06-Github"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"LowXiSi"},"content":" return new Person(name, telegram, email, studentStatus, roles, nickname);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"LowXiSi":20,"cth06-Github":13,"wuzengfu":3,"WinstonJin":2,"-":73}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"WinstonJin"},"content":" sb.append(PREFIX_TELEGRAM + person.getTelegram().value + \" \");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" sb.append(PREFIX_STUDENT_STATUS + person.getStudentStatus().value + \" \");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" person.getRoles().stream().forEach(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" s -\u003e sb.append(PREFIX_ROLE + s.roleName + \" \")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"WinstonJin"},"content":" descriptor.getTelegram().ifPresent(phone -\u003e sb.append(PREFIX_TELEGRAM).append(phone.value).append(\" \"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"LowXiSi"},"content":" descriptor.getStudentStatus()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" .ifPresent(studentStatus -\u003e sb.append(PREFIX_STUDENT_STATUS).append(studentStatus.value).append(\" \"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" if (descriptor.getRoles().isPresent()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e roles \u003d descriptor.getRoles().get();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wuzengfu"},"content":" if (roles.isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wuzengfu"},"content":" sb.append(PREFIX_ROLE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" roles.forEach(s -\u003e sb.append(PREFIX_ROLE).append(s.roleName).append(\" \"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"LowXiSi":8,"wuzengfu":6,"WinstonJin":2,"-":47}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" .withStudentStatus(\"undergraduate 1\").withEmail(\"alice@example.com\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"WinstonJin"},"content":" .withTelegram(\"94351253\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Admin\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" .withStudentStatus(\"undergraduate 2\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"WinstonJin"},"content":" .withEmail(\"johnd@example.com\").withTelegram(\"98765432\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"President\", \"Marketing\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"WinstonJin"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withTelegram(\"95352563\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"heinz@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"undergraduate 3\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"External Relations\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"WinstonJin"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withTelegram(\"87652533\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"cornelia@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"undergraduate 4\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Events (external)\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"WinstonJin"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withTelegram(\"9482224\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"werner@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"undergraduate 5\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Events (internal)\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"WinstonJin"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withTelegram(\"9482427\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"lydia@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"masters\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Events (external)\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"WinstonJin"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withTelegram(\"9482442\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"anna@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"phd\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Vice President\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"WinstonJin"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withTelegram(\"8482424\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" .withEmail(\"stefan@example.com\").withStudentStatus(\"undergraduate 6\").build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"WinstonJin"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withTelegram(\"8482131\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":" .withEmail(\"hans@example.com\").withStudentStatus(\"undergraduate 1\").build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"WinstonJin"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"LowXiSi"},"content":" .withEmail(VALID_EMAIL_AMY).withStudentStatus(VALID_STUDENT_STATUS_AMY).withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"WinstonJin"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"LowXiSi"},"content":" .withEmail(VALID_EMAIL_BOB).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT, VALID_ROLE_ADMIN)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"LowXiSi":20,"wuzengfu":15,"WinstonJin":11,"-":46}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wuzengfu"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103-F09-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103-F09-1/tp/actions)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"cth06-Github"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103-F09-1/tp/graph/badge.svg?token\u003dLE5D8TDMN5)](https://codecov.io/gh/AY2425S1-CS2103-F09-1/tp)","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wuzengfu"},"content":"* Data CoNdUctorS is a desktop application for administrative director of CCAs (Co-Curricular Activities) who has to manage and access database of the members.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"* It allows users to efficiently and easily manage and access large CCA membership database (including creation, edit, and deletion of data entries)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"* For the detailed documentation of this project, see the [Data CoNdUctorS Product Website](https://ay2425s1-cs2103-f09-1.github.io/tp).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wuzengfu"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"cth06-Github":1,"wuzengfu":5,"-":2}},{"path":"config/checkstyle/checkstyle.xml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"\u003c!DOCTYPE module PUBLIC","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" \"-//Checkstyle//DTD Checkstyle Configuration 1.3//EN\"","lastModifiedDate":"2019-03-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" \"https://checkstyle.org/dtds/configuration_1_3.dtd\"\u003e","lastModifiedDate":"2019-03-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" This configuration file enforces rules for the coding standard at","lastModifiedDate":"2022-05-29","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" https://se-education.org/guides/conventions/java/intermediate.html","lastModifiedDate":"2022-05-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"--\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cmodule name\u003d\"Checker\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FileTabCharacter\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there are no tab characters in the file. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NewlineAtEndOfFile\"\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c!-- Accept LF, CR or CRLF to accomodate devs who prefer different line endings --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"lineSeparator\" value\u003d\"lf_cr_crlf\"/\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RegexpSingleline\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Checks that FIXME is not used in comments. TODO is preferred. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"((//.*)|(\\*.*))FIXME\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\u0027TODO is preferred to FIXME.\"\u0027 /\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionFilter\"\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"file\" value\u003d\"${config_loc}/suppressions.xml\"/\u003e","lastModifiedDate":"2019-02-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LineLength\"\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a line is too long. --\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"max\" value\u003d\"120\"/\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c!-- All Java AST specific tests live under TreeWalker module. --\u003e","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TreeWalker\"\u003e","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c!-- Required to allow exceptions in code style --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SuppressionCommentFilter\"\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"offCommentFormat\" value\u003d\"CHECKSTYLE.OFF\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"onCommentFormat\" value\u003d\"CHECKSTYLE.ON\\: ([\\w\\|]+)\"/\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"checkFormat\" value\u003d\"$1\"/\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" IMPORT CHECKS","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c!-- Checks the ordering of import statements follow the rules that the default Eclipse formatter uses.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" The order rule \"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\" consists of:","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" 1. STATIC: static imports","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" 2. STANDARD_JAVA_PACKAGE: standard java/javax imports","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" 3. SPECIAL_IMPORTS: defined as org imports","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" 4. THIRD_PARTY_PACKAGE: defined as com imports","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CustomImportOrder\"\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"customImportOrderRules\"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" value\u003d\"STATIC###STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"specialImportsRegExp\" value\u003d\"^org\\.\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"thirdPartyPackageRegExp\" value\u003d\"^com\\.\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"sortImportsInGroupAlphabetically\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c!-- Checks for redundant import statements.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" An import statement is redundant if:","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * It is a duplicate of another import. This is, when a class is imported more than once.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * The class non-statically imported is from the java.lang package, e.g. importing java.lang.String.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * The class non-statically imported is from the same package as the current package.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RedundantImport\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003c!-- Checks for unused import statements.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" An import statement is unused if:","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" It\u0027s not referenced in the file.","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UnusedImports\"/\u003e","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AvoidStarImport\"/\u003e","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" NAMING CHECKS","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" \u003c!-- Validate abbreviations (consecutive capital letters) length in identifier name --\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AbbreviationAsWordInName\"\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreFinal\" value\u003d\"false\"/\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAbbreviationLength\" value\u003d\"1\"/\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"PackageName\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for package names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z]+(\\.[a-z][a-z0-9]{1,})*$\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"TypeName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, final fields against the expression \"^[A-Z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"TypeName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ConstantName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" \u003c!-- Validates non-private, static, final fields against the expression \"^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$\". --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"ConstantName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"applyToPrivate\" value\u003d\"false\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u003cmessage key\u003d\"name.invalidPattern\"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" value\u003d\"Variable \u0027\u0027{0}\u0027\u0027 should be in ALL_CAPS (if it is a constant) or be private (otherwise).\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"StaticVariableName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" \u003c!-- Validates static, non-final fields against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"StaticVariableName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*_?$\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MemberName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" \u003c!-- Validates non-static members against the supplied expression. --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MemberName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*$\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodName\"\u003e","lastModifiedDate":"2017-01-29","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for method names against the supplied expression. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" \u003cmetadata name\u003d\"altname\" value\u003d\"MethodName\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"^[a-z][a-zA-Z0-9]*(_[a-z][a-zA-Z0-9]+){0,2}$\"/\u003e","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParameterName\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for method parameters against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalFinalVariableName\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for local final variables against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LocalVariableName\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u003c!-- Validates identifiers for local variables against the expression \"^[a-z][a-zA-Z0-9]*$\". --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" LENGTH and CODING CHECKS","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" \u003c!-- Checks that array type declarations follow Java Style","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" Java style: public static void main(String[] args) // Allowed","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" C style: public static void main(String args[]) // Not allowed","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ArrayTypeStyle\"/\u003e","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" \u003c!-- Checks if a catch block is empty and does not contain any comments. --\u003e","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"EmptyCatchBlock\"/\u003e","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"LeftCurly\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" \u003c!-- Checks for placement of the left curly brace (\u0027{\u0027). --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"RightCurly\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" \u003c!-- Checks right curlies on CATCH, ELSE, and TRY blocks are on","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" the same line. e.g., the following example is fine:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" } else","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" \u003c!-- This next example is not fine:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" \u003cpre\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" if {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" ...","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" else","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" \u003c/pre\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" \u003c!-- Checks for braces around loop blocks --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NeedBraces\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" if (true) return 1; // Not allowed","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (true) { return 1; } // Not allowed","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" else if {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return 1; // else if should always be multi line","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" if (true)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" return 1; // Not allowed","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoopBody\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each variable declaration is in its own statement and on its own line. --\u003e","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MultipleVariableDeclarations\"/\u003e","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OneStatementPerLine\"/\u003e","lastModifiedDate":"2017-09-17","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-17","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" \u003c!-- Checks that long constants are defined with an upper ell.--\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"UpperEll\" /\u003e","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"FallThrough\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" \u003c!-- Warn about falling through to the next case statement. Similar to","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" javac -Xlint:fallthrough, but the check is suppressed if a single-line comment","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" on the last non-blank line preceding the fallen-into case contains \u0027fall through\u0027 (or","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" some other variants which we don\u0027t publicized to promote consistency).","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"reliefPattern\"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" value\u003d\"fall through|Fall through|fallthru|Fallthru|falls through|Falls through|fallthrough|Fallthrough|No break|NO break|no break|continue on\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingSwitchDefault\"/\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" \u003c!-- Checks that Class variables should never be declared public. --\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"VisibilityModifier\"\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"protectedAllowed\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowPublicFinalFields\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreAnnotationCanonicalNames\" value\u003d\"RegisterExtension, TempDir\"/\u003e","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-13","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" ORDER CHECKS","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the order of at-clauses follows the tagOrder default property value order.","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" @author, @version, @param, @return, @throws, @exception, @see, @since, @serial, @serialField, @serialData, @deprecated","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" \u003c!-- Checks if the Class and Interface declarations is organized in this order","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" 1. Class (static) variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" 2. Instance variables. Order: public, protected, package level (no access modifier), private.","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" 3. Constructors","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" 4. Methods","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" \u003cmodule name \u003d\"DeclarationOrder\"/\u003e","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" \u003c!-- Checks that default is after all cases in a switch statement --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"DefaultComesLast\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ModifierOrder\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" \u003c!-- Warn if modifier order is inconsistent with JLS3 8.1.1, 8.3.1, and","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" 8.4.3. The prescribed order is:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" public, protected, private, abstract, static, final, transient, volatile,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" synchronized, native, strictfp","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OverloadMethodsDeclarationOrder\"/\u003e","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" WHITESPACE CHECKS","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" \u003c!-- Checks that comments are indented relative to their position in the code --\u003e","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"CommentsIndentation\"/\u003e","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-03","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAround\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" \u003c!-- Checks that various tokens are surrounded by whitespace.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" This includes most binary operators and keywords followed","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" by regular or curly braces.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"ASSIGN, BAND, BAND_ASSIGN, BOR,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" BOR_ASSIGN, BSR, BSR_ASSIGN, BXOR, BXOR_ASSIGN, COLON, DIV, DIV_ASSIGN,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" EQUAL, GE, GT, LAND, LCURLY, LE, LITERAL_CATCH, LITERAL_DO, LITERAL_ELSE,","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_RETURN,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, LOR, LT, MINUS,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" MINUS_ASSIGN, MOD, MOD_ASSIGN, NOT_EQUAL, PLUS, PLUS_ASSIGN, QUESTION,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" RCURLY, SL, SLIST, SL_ASSIGN, SR_ASSIGN, STAR, STAR_ASSIGN\"/\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty constructors e.g. MyClass() {} --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyConstructors\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty methods e.g. void func() {} --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyMethods\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty types e.g. class Foo {}, enum Foo {} --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyTypes\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty loops e.g. for (int i \u003d 1; i \u003e 1; i++) {} --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLoops\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" \u003c!-- Allow empty lambdas e.g. () -\u003e {} --\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowEmptyLambdas\" value\u003d\"true\" /\u003e","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"WhitespaceAfter\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" \u003c!-- Checks that commas, semicolons and typecasts are followed by whitespace. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, SEMI, TYPECAST\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceAfter\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace after various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"BNOT, DEC, DOT, INC, LNOT, UNARY_MINUS,","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":" UNARY_PLUS\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":" \u003c!-- No trailing whitespace --\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Regexp\"\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"format\" value\u003d\"[ \\t]+$\"/\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"illegalPattern\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"message\" value\u003d\"Trailing whitespace\"/\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the non-assignment type operator is at the next line in a line wrap.","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":" This includes \"?\", \":\", \"\u003d\u003d\", \"!\u003d\", \"/\", \"+\", \"-\", \"*\", \"%\", \"\u003e\u003e\", \"\u003e\u003e\u003e\",","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":" \"\u003e\u003d\", \"\u003e\", \"\u003c\u003c\", \"\u003c\u003d\", \"\u003c\", \"^\", \"|\", \"||\", \"\u0026\", \"\u0026\u0026\", \"instanceof\",","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":" \"\u0026\" when used in a generic upper or lower bounds constraints,","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" e.g. \u003cT extends Foo \u0026 Bar\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" \"::\" when used as a reference to a method or constructor without arguments.","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":" e.g. String::compareToIgnoreCase","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"QUESTION, COLON, EQUAL, NOT_EQUAL, DIV, PLUS, MINUS, STAR, MOD, SR, BSR,","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" GE, GT, SL, LE, LT, BXOR, BOR, LOR, BAND, LAND, LITERAL_INSTANCEOF, TYPE_EXTENSION_AND, METHOD_REF\"/\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"OperatorWrap\"\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the assignment type operator is at the previous end of line in a line wrap.","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" This includes \"\u003d\", \"/\u003d\", \"+\u003d\", \"-\u003d\", \"*\u003d\", \"%\u003d\", \"\u003e\u003e\u003d\", \"\u003e\u003e\u003e\u003d\", \"\u003c\u003c\u003d\", \"^\u003d\", \"\u0026\u003d\".","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"ASSIGN, DIV_ASSIGN, PLUS_ASSIGN, MINUS_ASSIGN, STAR_ASSIGN, MOD_ASSIGN,","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":" SR_ASSIGN, BSR_ASSIGN, SL_ASSIGN, BXOR_ASSIGN, BOR_ASSIGN, BAND_ASSIGN\"/\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the \".\", \"@\" is at the next line in a line wrap. --\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"DOT, AT\"/\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"nl\"/\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SeparatorWrap\"\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":" \u003c!-- Checks that the \",\", \"]\", \"[\", \"...\", \";\", \"(\" is at the previous end of line in a line wrap. --\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"COMMA, RBRACK, ARRAY_DECLARATOR, ELLIPSIS, SEMI, LPAREN\"/\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"option\" value\u003d\"eol\"/\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-14","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"Indentation\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"caseIndent\" value\u003d\"0\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"throwsIndent\" value\u003d\"8\" /\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBefore\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before various unary operators. Linebreaks are allowed. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"SEMI, DOT, POST_DEC, POST_INC\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowLineBreaks\" value\u003d\"true\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"NoWhitespaceBeforeCaseDefaultColon\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace between method/constructor name and open parenthesis. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MethodParamPad\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"ParenPad\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"-"},"content":" \u003c!-- Checks that there is no whitespace before close parenthesis or after open parenthesis. --\u003e","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"severity\" value\u003d\"warning\"/\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"-"},"content":" \u003c!-- Checks that non-whitespace characters are separated by no more than one whitespace character.","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before \u003d)","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"SingleSpaceSeparator\"\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":" \u003c!-- Validate whitespace surrounding comments as well.","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"-"},"content":" a \u003d 1; // Allowed (single space before start of comment)","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"-"},"content":" a \u003d 1; /* Allowed (single space before start of comment) */","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"-"},"content":" /* Allowed (single space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"-"},"content":" a \u003d 1; // Not allowed (more than one space before start of comment)","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"-"},"content":" a \u003d 1; /* Not allowed (more than one space before start of comment) */","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"-"},"content":" /* Not allowed (more than one space after end of comment) */ a \u003d 1;","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"-"},"content":" This doesn\u0027t validate whitespace within comments so a comment /* like this */ is allowed.","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateComments\" value\u003d\"true\"/\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"-"},"content":" \u003c!--","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"-"},"content":" JAVADOC CHECKS","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"-"},"content":" --\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"LowXiSi"},"content":" \u003c!-- Checks that all block-roles are ordered correctly. --\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"AtclauseOrder\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"LowXiSi"},"content":" \u003c!-- Checks that Javadoc block roles appear only at the beginning of the line. --\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocBlockTagLocation\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"-"},"content":" \u003c!-- Checks that all Javadoc comments start from the second line. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocContentLocationCheck\" /\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each line in Javadoc has leading asterisks. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingLeadingAsterisk\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"-"},"content":" \u003c!-- Checks that each non-empty line in Javadoc has whitespace after leading asterisk. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMissingWhitespaceAfterAsterisk\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"LowXiSi"},"content":" \u003c!-- Checks that for block roles, indentation of continuation lines is at least 4 spaces. --\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocTagContinuationIndentation\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"-"},"content":" \u003c!-- Checks the Javadoc\u0027s format for every class, enumeration and interface. --\u003e","lastModifiedDate":"2022-05-29","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocType\"\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":" \u003c!-- Checks the Javadoc\u0027s format for every public method (excluding getters, setters and constructors). --\u003e","lastModifiedDate":"2022-05-29","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"JavadocMethod\"\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowedAnnotations\" value\u003d\"Override, Test, BeforeAll, BeforeEach, AfterAll, AfterEach, Subscribe\"/\u003e","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"accessModifiers\" value\u003d\"public\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"validateThrows\" value\u003d\"false\"/\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingParamTags\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingReturnTag\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"tokens\" value\u003d\"METHOD_DEF, ANNOTATION_FIELD_DEF\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"InvalidJavadocPosition\"/\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":" \u003c!-- Checks that every public method (excluding getters, setters and constructors) has a header comment. --\u003e","lastModifiedDate":"2022-05-29","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocMethodCheck\"\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"minLineCount\" value\u003d\"1\"/\u003e","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"allowMissingPropertyJavadoc\" value\u003d\"true\"/\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":" \u003cproperty name\u003d\"ignoreMethodNamesRegex\" value\u003d\"(set.*|get.*|main)\"/\u003e","lastModifiedDate":"2023-07-10","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":" \u003c!-- Checks that every public class, enumeration and interface has a header comment. --\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":" \u003cmodule name\u003d\"MissingJavadocType\"/\u003e","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":" \u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"\u003c/module\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"LowXiSi":3,"-":431}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"cth06-Github"},"content":"We are a team based in the [National University of Singapore](http://www.nus.edu.sg) coming from varied and diverse backgrounds!","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"WinstonJin"},"content":"You can reach us at the email `nowherenearyou[at]comp.nus.edu.sg`","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":"### Low Xi Si","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"\u003cimg src\u003d\"images/lowxisi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":"[[github](https://github.com/lowxisi)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"[[portfolio](team/lowxisi.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"cth06-Github"},"content":"### Chua Tse Hui","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"cth06-Github"},"content":"Materials Science and Engineering Student.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"somethingfishyfishy"},"content":"\u003cimg src\u003d\"images/cth06-github.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"cth06-Github"},"content":"[[Google](http://www.google.com.sg)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"cth06-Github"},"content":"[[github](https://github.com/cth06-Github)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"cth06-Github"},"content":"* Role: Project Helper","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"WinstonJin"},"content":"### Winston Jin","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"WinstonJin"},"content":"\u003cimg src\u003d\"images/winstonjin.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"WinstonJin"},"content":"[[homepage](http://www.comp.nus.edu.sg/)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"WinstonJin"},"content":"[[github](https://github.com/winstonjin)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"WinstonJin"},"content":"* Roll: out","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wuzengfu"},"content":"### Wu Zengfu","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":"\u003cimg src\u003d\"images/wuzengfu.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wuzengfu"},"content":"[[github](https://github.com/wuzengfu)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wuzengfu"},"content":"[[portfolio](team/zengfu.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wuzengfu"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wuzengfu"},"content":"* Responsibilities: Model","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"somethingfishyfishy"},"content":"### Ernest Yu","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"somethingfishyfishy"},"content":"\u003cimg src\u003d\"images/somethingfishyfishy.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"somethingfishyfishy"},"content":"[[github](http://github.com/somethingfishyfishy)] ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"somethingfishyfishy"},"content":"* Role: Supervisor, Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"somethingfishyfishy"},"content":"* Responsibilities: Many","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"cth06-Github":6,"LowXiSi":4,"wuzengfu":5,"WinstonJin":6,"-":32,"somethingfishyfishy":7}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"somethingfishyfishy"},"content":"*Last edited by: somethingfishyfishy 10/06/24 12:55 AM*","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"somethingfishyfishy"},"content":"Administrative Directors of CCAs in NUS who wish to manage a database of the CCA members more effectively. ","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"WinstonJin"},"content":"The database size is around 50 students. These directors are tech savvy who can type fast.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"WinstonJin"},"content":"**Value proposition**: Enables users to efficiently and easily manage large CCA membership database ","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"somethingfishyfishy"},"content":"(including creation, edition, and deletion of data entries).","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"somethingfishyfishy"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"WinstonJin"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ - |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"WinstonJin"},"content":"|----------|-----------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"WinstonJin"},"content":"| `* * *` | new user | search the contact information by his/her name | find the information of this member quickly. |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"WinstonJin"},"content":"| `* * *` | user | remove a member from the address book | update the address book accordingly if he is no longer in the club |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"WinstonJin"},"content":"| `* * *` | user | use this app to populate the member’s details into the app database | save their details (name, year, tele handle, email address) into the database for future reference |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"WinstonJin"},"content":"| `* *` | user | see a demonstration or tutorial for me to get started | know how to use the app |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"WinstonJin"},"content":"| `*` | user that values efficiency | “manipulate” member’s data entries in batches | can do things efficiently (Manipulate includes: Edit, Delete and Add) |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"WinstonJin"},"content":"| `*` | intermediate user | generate a list of selected member information easily | observe only the information I need |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"WinstonJin"},"content":"| `*` | user | archive data from past members / alumni to somewhere else | use them in the future when the need arises, such as passing the details to comapnies who may only wish to invite graduates only |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"WinstonJin"},"content":"| `*` | expert user | train another new user to take over my role and responsibility in the CCA | hand over the attendance tracking process easily |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"WinstonJin"},"content":"| `*` | frequent user | indicate whether a member has attended a training/event | keep track of the participation status (how active it is) of each member |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"WinstonJin"},"content":"| `*` | frequent user | search for member\u0027s details based on active participation status | have a better sensing on member\u0027s involvement to choose for the next ExCo |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"WinstonJin"},"content":"| `*` | intermediate user | understand / be guided on the automation capabilities of this tool such as automatically updating particulars (year of study, graduation status, on exchange) when a new semester begins | use the app with ease |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"WinstonJin"},"content":"| `*` | user | view the PDPA stance the members have in terms of sending of info the 3rd parties | know whether I am allowed to send member’s personal details to 3rd parties |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"somethingfishyfishy"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"somethingfishyfishy"},"content":"### use cases","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"LowXiSi"},"content":"**Use case: Add a person**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"LowXiSi"},"content":"1. User requests to add person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"LowXiSi"},"content":"2. AddressBook adds the person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"LowXiSi"},"content":"* 1a. Given contact has invalid or duplicate fields.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"LowXiSi"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"LowXiSi"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"LowXiSi"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"somethingfishyfishy"},"content":"* 1b. Given contact has duplicate \u0027name\u0027 field.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"somethingfishyfishy"},"content":" * 1a1. AddressBook shows an error message and prompts user to re-enter with nickname.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"somethingfishyfishy"},"content":" Use case ends.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"LowXiSi"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"LowXiSi"},"content":"**Use case: Delete a person**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"LowXiSi"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"LowXiSi"},"content":"1. User requests to delete person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"LowXiSi"},"content":"2. AddressBook deletes the person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"LowXiSi"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"LowXiSi"},"content":"* 1a. The given person is not in the AddressBook","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"LowXiSi"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"LowXiSi"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"LowXiSi"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"LowXiSi"},"content":"* 1b. Multiple matching persons in the AddressBook","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"LowXiSi"},"content":" * 1b1. AddressBook shows list of all matching persons.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"LowXiSi"},"content":" * 1b2. User enters index of person to delete","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"LowXiSi"},"content":"**Use case: Search for person**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"LowXiSi"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"LowXiSi"},"content":"1. User requests to search for person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"LowXiSi"},"content":"2. AddressBook shows list of all matching persons","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"LowXiSi"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"LowXiSi"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"LowXiSi"},"content":"* 1a. User did not provide the search input","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"LowXiSi"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"LowXiSi"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"somethingfishyfishy"},"content":"**Use case: View all contacts**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"somethingfishyfishy"},"content":"**MSS**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"somethingfishyfishy"},"content":"1. User requests to view all contacts","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"somethingfishyfishy"},"content":"2. AddressBook shows list of all contacts","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"somethingfishyfishy"},"content":" Use case ends.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"somethingfishyfishy"},"content":" ","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"somethingfishyfishy"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"LowXiSi"},"content":"4. Data changes should be automatically saved to avoid loss of data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"LowXiSi"},"content":"5. Should validate data entries to ensure consistency and correctness (eg. check that email format is correct etc.)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"LowXiSi"},"content":"6. Should be able to accommodate increasing member data over time.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"LowXiSi"},"content":"7. Should be able to retrieve and display member data within 2 seconds.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"LowXiSi"},"content":"8. User Interface should be intuitive even for new users.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"somethingfishyfishy"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"LowXiSi":44,"WinstonJin":16,"-":375,"somethingfishyfishy":25}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 User Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wuzengfu"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 t/Admin` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wuzengfu"},"content":" [//]: # (Temporarily removed as there is no optional parameter.)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wuzengfu"},"content":" [//]: # (* Items in square brackets are optional.\u003cbr\u003e e.g `n/NAME [r/ROLE]` can be used as `n/John Doe t/friend` or as `n/John Doe`.)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wuzengfu"},"content":"* Items with `…`​ after them can be used from one to multiple times.\u003cbr\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" e.g. `[r/ROLE]…​` can be used twice as `r/External r/Marketing` etc.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"wuzengfu"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS r/ROLE…​`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"wuzengfu"},"content":"**Tip:** A person can have one to many roles which match one of the following","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"wuzengfu"},"content":"1. President","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"wuzengfu"},"content":"2. Vice President","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"wuzengfu"},"content":"3. Admin","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"wuzengfu"},"content":"4. Marketing","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"wuzengfu"},"content":"5. Events (internal)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"wuzengfu"},"content":"6. Events (external)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"wuzengfu"},"content":"7. External Relations","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"wuzengfu"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 r/Admin`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"wuzengfu"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 r/President r/Admin`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"wuzengfu"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [r/ROLE]…​`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"wuzengfu"},"content":"* When editing roles, the existing roles of the person will be removed i.e adding of roles is not cumulative.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"wuzengfu"},"content":"* `edit 2 r/Admin r/President` Edits the roles of the 2nd person to be Admin and President, this removes all existing roles user has.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"wuzengfu"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [r/ROLE]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/Admin t/President`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"wuzengfu"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [r/ROLE]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"wuzengfu":21,"-":189}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"cth06-Github"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003edata coNdUctorS\u003c/a\u003e","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"cth06-Github"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103-F09-1/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"cth06-Github":2,"-":65}},{"path":"docs/team/lowxisi.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"LowXiSi"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"LowXiSi"},"content":" layout: default.md","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"LowXiSi"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"LowXiSi"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":"* **Project management**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" * User Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":"* **Community**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":"* **Tools**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"LowXiSi":46}},{"path":"docs/team/somethingfishyfishy.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"somethingfishyfishy"},"content":"---","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"somethingfishyfishy"},"content":" layout: default.md","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"somethingfishyfishy"},"content":" title: \"Ernest\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"somethingfishyfishy"},"content":"---","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"somethingfishyfishy"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"somethingfishyfishy"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"somethingfishyfishy"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"somethingfishyfishy"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"somethingfishyfishy"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"somethingfishyfishy"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"somethingfishyfishy"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"somethingfishyfishy"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"somethingfishyfishy"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"somethingfishyfishy"},"content":"* **Project management**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"somethingfishyfishy"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"somethingfishyfishy"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"somethingfishyfishy"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"somethingfishyfishy"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"somethingfishyfishy"},"content":"* **Documentation**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"somethingfishyfishy"},"content":" * User Guide:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"somethingfishyfishy"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"somethingfishyfishy"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"somethingfishyfishy"},"content":" * Developer Guide:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"somethingfishyfishy"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"somethingfishyfishy"},"content":"* **Community**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"somethingfishyfishy"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"somethingfishyfishy"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"somethingfishyfishy"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"somethingfishyfishy"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"somethingfishyfishy"},"content":"* **Tools**:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"somethingfishyfishy"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"somethingfishyfishy"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"somethingfishyfishy":46}},{"path":"docs/team/winstonjin.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"WinstonJin"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"WinstonJin"},"content":" layout: default.md","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"WinstonJin"},"content":" title: \"John Doe\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"WinstonJin"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"WinstonJin"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"WinstonJin"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"WinstonJin"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"WinstonJin"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"WinstonJin"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"WinstonJin"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"WinstonJin"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"WinstonJin"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"WinstonJin"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"WinstonJin"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"WinstonJin"},"content":"* **Project management**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"WinstonJin"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"WinstonJin"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"WinstonJin"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"WinstonJin"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"WinstonJin"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"WinstonJin"},"content":" * User Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"WinstonJin"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"WinstonJin"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"WinstonJin"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"WinstonJin"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"WinstonJin"},"content":"* **Community**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"WinstonJin"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"WinstonJin"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"WinstonJin"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"WinstonJin"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"WinstonJin"},"content":"* **Tools**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"WinstonJin"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"WinstonJin"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"WinstonJin"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"WinstonJin":46}},{"path":"docs/team/zengfu.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"wuzengfu"},"content":"---","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wuzengfu"},"content":" layout: default.md","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wuzengfu"},"content":" title: \"Zengfu\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wuzengfu"},"content":"---","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wuzengfu"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wuzengfu"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wuzengfu"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wuzengfu"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wuzengfu"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wuzengfu"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wuzengfu"},"content":"* **Project management**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wuzengfu"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wuzengfu"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wuzengfu"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wuzengfu"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wuzengfu"},"content":"* **Documentation**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wuzengfu"},"content":" * User Guide:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wuzengfu"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wuzengfu"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wuzengfu"},"content":" * Developer Guide:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wuzengfu"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wuzengfu"},"content":"* **Community**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wuzengfu"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wuzengfu"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wuzengfu"},"content":"* **Tools**:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wuzengfu"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wuzengfu"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wuzengfu"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"wuzengfu":46}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"WinstonJin"},"content":" .append(\"; Telegram: \")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"somethingfishyfishy"},"content":" .append(person.getTelegramHandle())","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" .append(\"; StudentStatus: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" .append(person.getStudentStatus())","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" .append(\"; Nickname: \");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" person.getRoles().forEach(builder::append);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"LowXiSi":4,"WinstonJin":1,"-":45,"somethingfishyfishy":1}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"cth06-Github"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NICKNAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"somethingfishyfishy"},"content":" + PREFIX_TELEGRAM_HANDLE + \"TELEGRAM \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" + PREFIX_STUDENT_STATUS + \"STUDENT_STATUS \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" + PREFIX_ROLE + \"ROLE [...]\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"cth06-Github"},"content":" + \"[\" + PREFIX_NICKNAME + \"NICKNAME]\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"somethingfishyfishy"},"content":" + PREFIX_TELEGRAM_HANDLE + \"98765432 \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" + PREFIX_STUDENT_STATUS + \"undergraduate 3 \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wuzengfu"},"content":" + PREFIX_ROLE + \"Admin \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" + PREFIX_ROLE + \"President \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"cth06-Github"},"content":" + PREFIX_NICKNAME + \"altName\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"cth06-Github":3,"LowXiSi":4,"wuzengfu":3,"-":74,"somethingfishyfishy":3}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":" + \"[\" + PREFIX_TELEGRAM_HANDLE + \"telegramHandle] \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" + \"[\" + PREFIX_STUDENT_STATUS + \"STUDENT_STATUS] \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" + \"[\" + PREFIX_ROLE + \"ROLE]...\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"somethingfishyfishy"},"content":" + PREFIX_TELEGRAM_HANDLE + \"91234567 \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"somethingfishyfishy"},"content":" TelegramHandle updatedTelegramHandle \u003d editPersonDescriptor.getTelegramHandle()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"somethingfishyfishy"},"content":" .orElse(personToEdit.getTelegramHandle());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LowXiSi"},"content":" StudentStatus updatedStudentStatus \u003d","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LowXiSi"},"content":" editPersonDescriptor.getStudentStatus().orElse(personToEdit.getStudentStatus());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e updatedRoles \u003d editPersonDescriptor.getRoles().orElse(personToEdit.getRoles());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"wuzengfu"},"content":" Nickname updatedNickname \u003d editPersonDescriptor.getNickname().orElse(personToEdit.getNickname());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"somethingfishyfishy"},"content":" return new Person(updatedName, updatedTelegramHandle, updatedEmail, updatedStudentStatus, updatedRoles,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"LowXiSi"},"content":" updatedNickname);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"somethingfishyfishy"},"content":" private TelegramHandle telegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"LowXiSi"},"content":" private StudentStatus studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"wuzengfu"},"content":" private Set\u003cRole\u003e roles;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"cth06-Github"},"content":" private Nickname nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"LowXiSi"},"content":" * A defensive copy of {@code roles} is used internally.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"somethingfishyfishy"},"content":" setTelegramHandle(toCopy.telegramHandle);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"LowXiSi"},"content":" setStudentStatus(toCopy.studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"LowXiSi"},"content":" setRoles(toCopy.roles);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"cth06-Github"},"content":" setNickname(toCopy.nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"somethingfishyfishy"},"content":" return CollectionUtil.isAnyNonNull(name, telegramHandle, email, studentStatus, roles);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"somethingfishyfishy"},"content":" public void setTelegramHandle(TelegramHandle telegramHandle) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"somethingfishyfishy"},"content":" this.telegramHandle \u003d telegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"somethingfishyfishy"},"content":" public Optional\u003cTelegramHandle\u003e getTelegramHandle() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"somethingfishyfishy"},"content":" return Optional.ofNullable(telegramHandle);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"LowXiSi"},"content":" public void setStudentStatus(StudentStatus studentStatus) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"LowXiSi"},"content":" this.studentStatus \u003d studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"LowXiSi"},"content":" public Optional\u003cStudentStatus\u003e getStudentStatus() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"LowXiSi"},"content":" return Optional.ofNullable(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"LowXiSi"},"content":" * Sets {@code roles} to this object\u0027s {@code roles}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"LowXiSi"},"content":" * A defensive copy of {@code roles} is used internally.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"LowXiSi"},"content":" public void setRoles(Set\u003cRole\u003e roles) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"wuzengfu"},"content":" this.roles \u003d (roles !\u003d null) ? new HashSet\u003c\u003e(roles) : null;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"LowXiSi"},"content":" * Returns {@code Optional#empty()} if {@code roles} is null.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"LowXiSi"},"content":" public Optional\u003cSet\u003cRole\u003e\u003e getRoles() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"wuzengfu"},"content":" return (roles !\u003d null) ? Optional.of(Collections.unmodifiableSet(roles)) : Optional.empty();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"cth06-Github"},"content":" public void setNickname(Nickname nickname) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"cth06-Github"},"content":" this.nickname \u003d nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"cth06-Github"},"content":" public Optional\u003cNickname\u003e getNickname() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"cth06-Github"},"content":" return Optional.ofNullable(nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"somethingfishyfishy"},"content":" \u0026\u0026 Objects.equals(telegramHandle, otherEditPersonDescriptor.telegramHandle)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"LowXiSi"},"content":" \u0026\u0026 Objects.equals(studentStatus, otherEditPersonDescriptor.studentStatus)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"wuzengfu"},"content":" \u0026\u0026 Objects.equals(roles, otherEditPersonDescriptor.roles)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"cth06-Github"},"content":" \u0026\u0026 Objects.equals(nickname, otherEditPersonDescriptor.nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"somethingfishyfishy"},"content":" .add(\"telegramHandle\", telegramHandle)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"LowXiSi"},"content":" .add(\"studentStatus\", studentStatus)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"LowXiSi"},"content":" .add(\"roles\", roles)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"cth06-Github"},"content":" .add(\"nickname\", nickname)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"LowXiSi":24,"cth06-Github":11,"wuzengfu":7,"-":200,"somethingfishyfishy":16}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"cth06-Github"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NICKNAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"somethingfishyfishy"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TELEGRAM_HANDLE,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"somethingfishyfishy"},"content":" PREFIX_EMAIL, PREFIX_STUDENT_STATUS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" PREFIX_ROLE, PREFIX_NICKNAME);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" if (!arePrefixesPresent(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"somethingfishyfishy"},"content":" argMultimap, PREFIX_NAME, PREFIX_STUDENT_STATUS, PREFIX_TELEGRAM_HANDLE, PREFIX_EMAIL, PREFIX_ROLE)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"somethingfishyfishy"},"content":" PREFIX_NAME, PREFIX_TELEGRAM_HANDLE, PREFIX_EMAIL, PREFIX_STUDENT_STATUS, PREFIX_NICKNAME);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"somethingfishyfishy"},"content":" TelegramHandle telegramHandle \u003d ParserUtil.parseTelegramHandle(","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"somethingfishyfishy"},"content":" argMultimap.getValue(PREFIX_TELEGRAM_HANDLE).get());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" StudentStatus studentStatus \u003d ParserUtil.parseStudentStatus(argMultimap.getValue(PREFIX_STUDENT_STATUS).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e roleList \u003d ParserUtil.parseRoles(argMultimap.getAllValues(PREFIX_ROLE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" Nickname nickname \u003d ParserUtil.parseNickname(argMultimap.getValue(PREFIX_NICKNAME).orElse(\"\"));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"somethingfishyfishy"},"content":" Person person \u003d new Person(name, telegramHandle, email, studentStatus, roleList, nickname);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"cth06-Github":2,"LowXiSi":7,"wuzengfu":3,"-":48,"somethingfishyfishy":9}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Prefix PREFIX_TELEGRAM_HANDLE \u003d new Prefix(\"th/\");","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":" public static final Prefix PREFIX_STUDENT_STATUS \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":" public static final Prefix PREFIX_ROLE \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"cth06-Github"},"content":" public static final Prefix PREFIX_NICKNAME \u003d new Prefix(\"nn/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"LowXiSi":1,"cth06-Github":1,"wuzengfu":1,"-":11,"somethingfishyfishy":1}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"somethingfishyfishy"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TELEGRAM_HANDLE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" PREFIX_STUDENT_STATUS, PREFIX_ROLE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"somethingfishyfishy"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TELEGRAM_HANDLE,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"somethingfishyfishy"},"content":" PREFIX_EMAIL, PREFIX_STUDENT_STATUS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"somethingfishyfishy"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM_HANDLE).isPresent()) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"somethingfishyfishy"},"content":" editPersonDescriptor.setTelegramHandle(ParserUtil","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"somethingfishyfishy"},"content":" .parseTelegramHandle(argMultimap.getValue(PREFIX_TELEGRAM_HANDLE).get()));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"LowXiSi"},"content":" if (argMultimap.getValue(PREFIX_STUDENT_STATUS).isPresent()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"LowXiSi"},"content":" editPersonDescriptor.setStudentStatus(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" ParserUtil.parseStudentStatus(argMultimap.getValue(PREFIX_STUDENT_STATUS).get()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":" parseRolesForEdit(argMultimap.getAllValues(PREFIX_ROLE)).ifPresent(editPersonDescriptor::setRoles);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"LowXiSi"},"content":" * Parses {@code Collection\u003cString\u003e roles} into a {@code Set\u003cRole\u003e} if {@code roles} is non-empty.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"LowXiSi"},"content":" * If {@code roles} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"LowXiSi"},"content":" * {@code Set\u003cRole\u003e} containing zero roles.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LowXiSi"},"content":" private Optional\u003cSet\u003cRole\u003e\u003e parseRolesForEdit(Collection\u003cString\u003e roles) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LowXiSi"},"content":" assert roles !\u003d null;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"LowXiSi"},"content":" if (roles.isEmpty()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"LowXiSi"},"content":" return Optional.of(ParserUtil.parseRoles(roles));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"LowXiSi":13,"wuzengfu":2,"-":65,"somethingfishyfishy":7}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"somethingfishyfishy"},"content":" * Parses a {@code String telegramHandle} into a {@code TelegramHandle}.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"somethingfishyfishy"},"content":" * @throws ParseException if the given {@code telegramHandle} is invalid.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"somethingfishyfishy"},"content":" public static TelegramHandle parseTelegramHandle(String telegramHandle) throws ParseException {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"somethingfishyfishy"},"content":" requireNonNull(telegramHandle);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"somethingfishyfishy"},"content":" String trimmedTelegramHandle \u003d telegramHandle.trim();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"somethingfishyfishy"},"content":" if (!TelegramHandle.isValidTelegramHandle(trimmedTelegramHandle)) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"somethingfishyfishy"},"content":" throw new ParseException(TelegramHandle.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"somethingfishyfishy"},"content":" return new TelegramHandle(trimmedTelegramHandle);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"LowXiSi"},"content":" public static StudentStatus parseStudentStatus(String studentStatus) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"LowXiSi"},"content":" requireNonNull(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"LowXiSi"},"content":" String trimmedStudentStatus \u003d studentStatus.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LowXiSi"},"content":" if (!StudentStatus.isValidStudentStatus(trimmedStudentStatus)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LowXiSi"},"content":" throw new ParseException(StudentStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"LowXiSi"},"content":" return new StudentStatus(trimmedStudentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"LowXiSi"},"content":" * Parses a {@code String role} into a {@code Role}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LowXiSi"},"content":" * @throws ParseException if the given {@code role} is invalid.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"LowXiSi"},"content":" public static Role parseRole(String role) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"LowXiSi"},"content":" requireNonNull(role);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"LowXiSi"},"content":" String trimmedRole \u003d role.trim();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"LowXiSi"},"content":" if (!Role.isValidRoleName(trimmedRole)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"wuzengfu"},"content":" throw new ParseException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"LowXiSi"},"content":" return new Role(trimmedRole);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"LowXiSi"},"content":" * Parses {@code Collection\u003cString\u003e roles} into a {@code Set\u003cRole\u003e}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"LowXiSi"},"content":" public static Set\u003cRole\u003e parseRoles(Collection\u003cString\u003e roles) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"LowXiSi"},"content":" requireNonNull(roles);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"wuzengfu"},"content":" final Set\u003cRole\u003e roleSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"LowXiSi"},"content":" for (String roleName : roles) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"LowXiSi"},"content":" roleSet.add(parseRole(roleName));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"wuzengfu"},"content":" return roleSet;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"cth06-Github"},"content":" * Parses a {@code String nickname} into a {@code Nickname}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"cth06-Github"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"cth06-Github"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"cth06-Github"},"content":" * @throws ParseException if the given {@code Nickname} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"cth06-Github"},"content":" public static Nickname parseNickname(String nickname) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"cth06-Github"},"content":" requireNonNull(nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"cth06-Github"},"content":" String trimmedNickname \u003d nickname.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"cth06-Github"},"content":" return new Nickname(trimmedNickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"LowXiSi":19,"cth06-Github":12,"wuzengfu":4,"-":93,"somethingfishyfishy":9}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"somethingfishyfishy"},"content":" private final TelegramHandle telegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" private final StudentStatus studentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wuzengfu"},"content":" private final Set\u003cRole\u003e roles \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"cth06-Github"},"content":" private final Nickname nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"somethingfishyfishy"},"content":" public Person(Name name, TelegramHandle telegramHandle, Email email, StudentStatus studentStatus,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e roles, Nickname nickname) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"somethingfishyfishy"},"content":" requireAllNonNull(name, telegramHandle, email, studentStatus, roles, nickname);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"somethingfishyfishy"},"content":" this.telegramHandle \u003d telegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" this.studentStatus \u003d studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" this.roles.addAll(roles);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"cth06-Github"},"content":" this.nickname \u003d nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"somethingfishyfishy"},"content":" public TelegramHandle getTelegramHandle() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"somethingfishyfishy"},"content":" return telegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":" public StudentStatus getStudentStatus() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"LowXiSi"},"content":" return studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":" public Set\u003cRole\u003e getRoles() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"wuzengfu"},"content":" return Collections.unmodifiableSet(roles);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"cth06-Github"},"content":" public Nickname getNickname() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"cth06-Github"},"content":" return nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"somethingfishyfishy"},"content":" \u0026\u0026 telegramHandle.equals(otherPerson.telegramHandle)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LowXiSi"},"content":" \u0026\u0026 studentStatus.equals(otherPerson.studentStatus)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"wuzengfu"},"content":" \u0026\u0026 roles.equals(otherPerson.roles)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"cth06-Github"},"content":" \u0026\u0026 nickname.equals(otherPerson.nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"somethingfishyfishy"},"content":" return Objects.hash(name, telegramHandle, email, studentStatus, roles, nickname);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"somethingfishyfishy"},"content":" .add(\"telegram handle\", telegramHandle)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"LowXiSi"},"content":" .add(\"studentStatus\", studentStatus)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"LowXiSi"},"content":" .add(\"roles\", roles)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"cth06-Github"},"content":" .add(\"nickname\", nickname)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"cth06-Github":7,"LowXiSi":9,"wuzengfu":5,"-":97,"somethingfishyfishy":9}},{"path":"src/main/java/seedu/address/model/person/StudentStatus.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LowXiSi"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"LowXiSi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":" * Represents a Person\u0027s student status in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidStudentStatus(String)}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"public class StudentStatus {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Student statuses must take one of the values below: \\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":" + \"undergraduate x, where x: An integer value between 1 and 6 inclusive\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" + \"masters\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":" + \"phd\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"somethingfishyfishy"},"content":" public static final String VALIDATION_REGEX \u003d \"^((undergraduate \\\\b[1-6]\\\\b)|masters|phd)$\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":" public final String value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" * Constructs an {@code StudentStatus}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" * @param studentStatus A valid student status.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" public StudentStatus(String studentStatus) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" requireNonNull(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" checkArgument(isValidStudentStatus(studentStatus), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" value \u003d studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" * Returns true if a given string is a valid email.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" public static boolean isValidStudentStatus(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":" return value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"LowXiSi"},"content":" if (!(other instanceof StudentStatus)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" StudentStatus otherStudentStatus \u003d (StudentStatus) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":" return value.equals(otherStudentStatus.value);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"LowXiSi"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"LowXiSi"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"LowXiSi"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"LowXiSi":63,"somethingfishyfishy":1}},{"path":"src/main/java/seedu/address/model/person/TelegramHandle.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"WinstonJin"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"WinstonJin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"WinstonJin"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"WinstonJin"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"WinstonJin"},"content":" * Represents a Person\u0027s telegram handle in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"WinstonJin"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegram(String)}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"WinstonJin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":"public class TelegramHandle {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"WinstonJin"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":" \"Telegram handles should not contain @, and it should have a length of 3 to 29 characters inclusive\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":" public static final String VALIDATION_REGEX \u003d \"^[A-Za-z0-9_]{3,29}$\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"WinstonJin"},"content":" public final String value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"WinstonJin"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"WinstonJin"},"content":" * Constructs a {@code Telegram}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"WinstonJin"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"WinstonJin"},"content":" * @param telegram A valid telegram handle.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"WinstonJin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"somethingfishyfishy"},"content":" public TelegramHandle(String telegram) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"WinstonJin"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"somethingfishyfishy"},"content":" checkArgument(isValidTelegramHandle(telegram), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"WinstonJin"},"content":" value \u003d telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"WinstonJin"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"WinstonJin"},"content":" * Returns true if a given string is a valid telegram handle.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"WinstonJin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"somethingfishyfishy"},"content":" public static boolean isValidTelegramHandle(String test) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"WinstonJin"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"WinstonJin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"WinstonJin"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"WinstonJin"},"content":" return value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"WinstonJin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"WinstonJin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"WinstonJin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"WinstonJin"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"WinstonJin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"somethingfishyfishy"},"content":" if (other instanceof TelegramHandle otherTelegram) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"WinstonJin"},"content":" return value.equals(otherTelegram.value);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"somethingfishyfishy"},"content":" return false;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"somethingfishyfishy"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"WinstonJin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"WinstonJin"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"WinstonJin"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"WinstonJin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"WinstonJin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"WinstonJin"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"LowXiSi":2,"WinstonJin":48,"somethingfishyfishy":7}},{"path":"src/main/java/seedu/address/model/tag/Nickname.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"cth06-Github"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"cth06-Github"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"cth06-Github"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"cth06-Github"},"content":" * Represents a Nickname in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"cth06-Github"},"content":" * Guarantees: immutable}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"cth06-Github"},"content":"public class Nickname {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"cth06-Github"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Nicknames should not be empty\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"cth06-Github"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"cth06-Github"},"content":" * Constructs a {@code Nickname}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"cth06-Github"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"cth06-Github"},"content":" * @param nickname A valid nickname.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"cth06-Github"},"content":" public Nickname(String nickname) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"cth06-Github"},"content":" requireNonNull(nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"cth06-Github"},"content":" this.value \u003d nickname.trim(); // in ParserUtil.java also have trim()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"cth06-Github"},"content":" * Returns true if a given nickname is empty.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"cth06-Github"},"content":" public boolean isEmpty() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"cth06-Github"},"content":" return value.isEmpty();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"cth06-Github"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"cth06-Github"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"cth06-Github"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"cth06-Github"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"cth06-Github"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"cth06-Github"},"content":" if (!(other instanceof Nickname)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"cth06-Github"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"cth06-Github"},"content":" Nickname otherNickname \u003d (Nickname) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"cth06-Github"},"content":" return value.equals(otherNickname.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"cth06-Github"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"cth06-Github"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"cth06-Github"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"cth06-Github"},"content":" * Format state as text for viewing.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"cth06-Github"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"cth06-Github"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"cth06-Github"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"cth06-Github":58}},{"path":"src/main/java/seedu/address/model/tag/Role.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":" * Represents a Role in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wuzengfu"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidRoleName(String)}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":"public class Role {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Role must be one of the following: \\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wuzengfu"},"content":" + \"1. President\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wuzengfu"},"content":" + \"2. Vice President\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wuzengfu"},"content":" + \"3. Admin\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wuzengfu"},"content":" + \"4. Marketing\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":" + \"5. Events (internal)\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wuzengfu"},"content":" + \"6. Events (external)\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":" + \"7. External Relations\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wuzengfu"},"content":" public static final String[] AVAILABLE_ROLES \u003d {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wuzengfu"},"content":" \"President\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wuzengfu"},"content":" \"Vice President\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wuzengfu"},"content":" \"Admin\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wuzengfu"},"content":" \"Marketing\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wuzengfu"},"content":" \"Events (internal)\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wuzengfu"},"content":" \"Events (external)\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wuzengfu"},"content":" \"External Relations\"};","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wuzengfu"},"content":" public final String roleName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wuzengfu"},"content":" * Constructs a {@code Role}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wuzengfu"},"content":" * @param roleName A valid role name.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" public Role(String roleName) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wuzengfu"},"content":" requireNonNull(roleName);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" checkArgument(isValidRoleName(roleName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":" this.roleName \u003d roleName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":" * Returns true if a given string is a valid role name.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"wuzengfu"},"content":" public static boolean isValidRoleName(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wuzengfu"},"content":" requireNonNull(test);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wuzengfu"},"content":" return Arrays.asList(AVAILABLE_ROLES).contains(test);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wuzengfu"},"content":" if (!(other instanceof Role)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"wuzengfu"},"content":" Role otherRole \u003d (Role) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"wuzengfu"},"content":" return roleName.equals(otherRole.roleName);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"wuzengfu"},"content":" return roleName.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"wuzengfu"},"content":" return \u0027[\u0027 + roleName + \u0027]\u0027;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"LowXiSi":1,"wuzengfu":36,"-":42}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Alex Yeoh\"), new TelegramHandle(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 1\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"President\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Bernice Yu\"), new TelegramHandle(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 3\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"President\", \"Admin\"), new Nickname(\"\u003cnn space\u003e\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new TelegramHandle(\"93210283\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"somethingfishyfishy"},"content":" new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"somethingfishyfishy"},"content":" new StudentStatus(\"masters\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Marketing\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"David Li\"), new TelegramHandle(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 4\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Admin\"), new Nickname(\"\u003cnn space\u003e\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new TelegramHandle(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"phd\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Events (internal)\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new TelegramHandle(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 4\"),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"External Relations\"), new Nickname(\"\"))","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":" public static Set\u003cRole\u003e getRoleSet(String... strings) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" .map(Role::new)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"LowXiSi":13,"cth06-Github":1,"wuzengfu":2,"-":37,"somethingfishyfishy":9}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"somethingfishyfishy"},"content":" private final String telegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" private final String studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" private final List\u003cJsonAdaptedRole\u003e roles \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"cth06-Github"},"content":" private final String nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"somethingfishyfishy"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"telegramHandle\") String telegramHandle,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"studentStatus\") String studentStatus,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":" @JsonProperty(\"roles\") List\u003cJsonAdaptedRole\u003e roles,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" @JsonProperty(\"nickname\") String nickname) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":" this.telegramHandle \u003d telegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" this.studentStatus \u003d studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" if (roles !\u003d null) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" this.roles.addAll(roles);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"cth06-Github"},"content":" this.nickname \u003d nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"somethingfishyfishy"},"content":" telegramHandle \u003d source.getTelegramHandle().value;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"LowXiSi"},"content":" studentStatus \u003d source.getStudentStatus().value;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"LowXiSi"},"content":" roles.addAll(source.getRoles().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" .map(JsonAdaptedRole::new)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"cth06-Github"},"content":" nickname \u003d source.getNickname().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"wuzengfu"},"content":" final List\u003cRole\u003e personRoles \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"LowXiSi"},"content":" for (JsonAdaptedRole role : roles) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"LowXiSi"},"content":" personRoles.add(role.toModelType());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"somethingfishyfishy"},"content":" if (telegramHandle \u003d\u003d null) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"WinstonJin"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"somethingfishyfishy"},"content":" TelegramHandle.class.getSimpleName()));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"somethingfishyfishy"},"content":" if (!TelegramHandle.isValidTelegramHandle(telegramHandle)) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"somethingfishyfishy"},"content":" throw new IllegalValueException(TelegramHandle.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"somethingfishyfishy"},"content":" final TelegramHandle modelTelegramHandle \u003d new TelegramHandle(telegramHandle);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LowXiSi"},"content":" if (studentStatus \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LowXiSi"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"LowXiSi"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, StudentStatus.class.getSimpleName()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"LowXiSi"},"content":" if (!StudentStatus.isValidStudentStatus(studentStatus)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"LowXiSi"},"content":" throw new IllegalValueException(StudentStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"LowXiSi"},"content":" final StudentStatus modelstudentStatus \u003d new StudentStatus(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"wuzengfu"},"content":" final Set\u003cRole\u003e modelRoles \u003d new HashSet\u003c\u003e(personRoles);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"cth06-Github"},"content":" final Nickname modelNickname \u003d new Nickname(nickname); // Nickname can be anything","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"somethingfishyfishy"},"content":" return new Person(modelName, modelTelegramHandle, modelEmail, modelstudentStatus, modelRoles, modelNickname);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"LowXiSi":20,"cth06-Github":5,"wuzengfu":3,"WinstonJin":1,"-":76,"somethingfishyfishy":11}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedRole.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"LowXiSi"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"LowXiSi"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"LowXiSi"},"content":"import com.fasterxml.jackson.annotation.JsonValue;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":" * Jackson-friendly version of {@link Role}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"class JsonAdaptedRole {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" private final String roleName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":" * Constructs a {@code JsonAdaptedRole} with the given {@code roleName}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":" @JsonCreator","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":" public JsonAdaptedRole(String roleName) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":" this.roleName \u003d roleName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" * Converts a given {@code Role} into this class for Jackson use.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" public JsonAdaptedRole(Role source) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" roleName \u003d source.roleName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" @JsonValue","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" public String getRoleName() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" return roleName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" * Converts this Jackson-friendly adapted role object into the model\u0027s {@code Role} object.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" *","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted role.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":" public Role toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" if (!Role.isValidRoleName(roleName)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" throw new IllegalValueException(Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" return new Role(roleName);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"LowXiSi":48}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"somethingfishyfishy"},"content":" private Label telegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" private Label studentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" private FlowPane roles;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"cth06-Github"},"content":" @FXML","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"cth06-Github"},"content":" private FlowPane nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"somethingfishyfishy"},"content":" telegramHandle.setText(person.getTelegramHandle().value);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" studentStatus.setText(person.getStudentStatus().value);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"LowXiSi"},"content":" person.getRoles().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.roleName))","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"LowXiSi"},"content":" .forEach(tag -\u003e roles.getChildren().add(new Label(tag.roleName)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"cth06-Github"},"content":" String nicknameObtained \u003d person.getNickname().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"cth06-Github"},"content":" if (!nicknameObtained.isEmpty()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"cth06-Github"},"content":" nickname.getChildren().add(new Label(nicknameObtained));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"LowXiSi":5,"cth06-Github":7,"wuzengfu":1,"-":51,"somethingfishyfishy":2}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"cth06-Github"},"content":" -fx-background-color: #3e7b91; /*change colour of the tag*/","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false}],"authorContributionMap":{"cth06-Github":1,"-":351}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" \u003cFlowPane fx:id\u003d\"roles\" /\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"somethingfishyfishy"},"content":" \u003cLabel fx:id\u003d\"telegramHandle\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$telegramHandle\" /\u003e","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" \u003cLabel fx:id\u003d\"studentStatus\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$studentStatus\" /\u003e","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"cth06-Github"},"content":" \u003cFlowPane fx:id\u003d\"nickname\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"LowXiSi":2,"cth06-Github":1,"-":33,"somethingfishyfishy":1}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"somethingfishyfishy"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + TELEGRAM_HANDLE_DESC_AMY","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"LowXiSi"},"content":" + EMAIL_DESC_AMY + STUDENT_STATUS_DESC_AMY + ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"wuzengfu"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"LowXiSi":3,"wuzengfu":1,"-":170,"somethingfishyfishy":2}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"somethingfishyfishy"},"content":" public static final String VALID_TELEGRAM_HANDLE_AMY \u003d \"11111111\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"somethingfishyfishy"},"content":" public static final String VALID_TELEGRAM_HANDLE_BOB \u003d \"22222222\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" public static final String VALID_ROLE_PRESIDENT \u003d \"President\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" public static final String VALID_ROLE_ADMIN \u003d \"Admin\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" public static final String VALID_STUDENT_STATUS_AMY \u003d \"undergraduate 1\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" public static final String VALID_STUDENT_STATUS_BOB \u003d \"masters\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"somethingfishyfishy"},"content":" public static final String TELEGRAM_HANDLE_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM_HANDLE + VALID_TELEGRAM_HANDLE_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"somethingfishyfishy"},"content":" public static final String TELEGRAM_HANDLE_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM_HANDLE + VALID_TELEGRAM_HANDLE_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" public static final String STUDENT_STATUS_DESC_AMY \u003d \" \" + PREFIX_STUDENT_STATUS + VALID_STUDENT_STATUS_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" public static final String STUDENT_STATUS_DESC_BOB \u003d \" \" + PREFIX_STUDENT_STATUS + VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" public static final String ROLE_DESC_ADMIN \u003d \" \" + PREFIX_ROLE + VALID_ROLE_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LowXiSi"},"content":" public static final String ROLE_DESC_PRESIDENT \u003d \" \" + PREFIX_ROLE + VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"somethingfishyfishy"},"content":" public static final String INVALID_TELEGRAM_HANDLE_DESC \u003d \" \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"somethingfishyfishy"},"content":" + PREFIX_TELEGRAM_HANDLE + \"@911\"; // \u0027@\u0027 not allowed in telegrams","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" public static final String INVALID_STUDENT_STATUS_DESC \u003d \" \" + PREFIX_STUDENT_STATUS; // empty string not allowed","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":" public static final String INVALID_ROLE_DESC \u003d \" \" + PREFIX_ROLE + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"somethingfishyfishy"},"content":" .withTelegramHandle(VALID_TELEGRAM_HANDLE_AMY)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"somethingfishyfishy"},"content":" .withEmail(VALID_EMAIL_AMY).withStudentStatus(VALID_STUDENT_STATUS_AMY)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"somethingfishyfishy"},"content":" .withTelegramHandle(VALID_TELEGRAM_HANDLE_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"somethingfishyfishy"},"content":" .withEmail(VALID_EMAIL_BOB).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT, VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"LowXiSi":13,"wuzengfu":1,"-":106,"somethingfishyfishy":11}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_HANDLE_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"somethingfishyfishy"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withTelegramHandle(VALID_TELEGRAM_HANDLE_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"somethingfishyfishy"},"content":" .withTelegramHandle(VALID_TELEGRAM_HANDLE_BOB).withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"LowXiSi":2,"-":179,"somethingfishyfishy":3}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_HANDLE_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"somethingfishyfishy"},"content":" // different telegramHandle -\u003e returns false","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTelegramHandle(VALID_TELEGRAM_HANDLE_BOB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withStudentStatus(VALID_STUDENT_STATUS_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"somethingfishyfishy"},"content":" + editPersonDescriptor.getName().orElse(null) + \", telegramHandle\u003d\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"somethingfishyfishy"},"content":" + editPersonDescriptor.getTelegramHandle().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"LowXiSi"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", studentStatus\u003d\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"LowXiSi"},"content":" + editPersonDescriptor.getStudentStatus().orElse(null) + \", roles\u003d\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"LowXiSi"},"content":" + editPersonDescriptor.getRoles().orElse(null) + \", nickname\u003d\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"cth06-Github"},"content":" + editPersonDescriptor.getNickname().orElse(null) + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"LowXiSi":7,"cth06-Github":1,"-":59,"somethingfishyfishy":5}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ROLE_DESC;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_STUDENT_STATUS_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_HANDLE_DESC;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_HANDLE_DESC_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_HANDLE_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"somethingfishyfishy"},"content":" + TELEGRAM_HANDLE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN, new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"LowXiSi"},"content":" // multiple roles - all accepted","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" Person expectedPersonMultipleRoles \u003d new PersonBuilder(BOB).withRoles(VALID_ROLE_ADMIN, VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"somethingfishyfishy"},"content":" NAME_DESC_BOB + TELEGRAM_HANDLE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"somethingfishyfishy"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_PRESIDENT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"LowXiSi"},"content":" new AddCommand(expectedPersonMultipleRoles));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"LowXiSi"},"content":" public void parse_repeatedNonRoleValue_failure() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"somethingfishyfishy"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + TELEGRAM_HANDLE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"somethingfishyfishy"},"content":" // multiple telegramHandles","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, TELEGRAM_HANDLE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"somethingfishyfishy"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"LowXiSi"},"content":" // multiple student statuses","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, STUDENT_STATUS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"LowXiSi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"somethingfishyfishy"},"content":" validExpectedPersonString + TELEGRAM_HANDLE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"somethingfishyfishy"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_TELEGRAM_HANDLE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"LowXiSi"},"content":" PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"somethingfishyfishy"},"content":" // invalid telegramHandle","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, INVALID_TELEGRAM_HANDLE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"somethingfishyfishy"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"LowXiSi"},"content":" // invalid student status","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, INVALID_STUDENT_STATUS_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"LowXiSi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"somethingfishyfishy"},"content":" // invalid telegramHandle","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_TELEGRAM_HANDLE_DESC,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"somethingfishyfishy"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"LowXiSi"},"content":" // invalid student status","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_STUDENT_STATUS_DESC,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"LowXiSi"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"LowXiSi"},"content":" // zero roles","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"LowXiSi"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + TELEGRAM_HANDLE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_AMY + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, VALID_NAME_BOB + TELEGRAM_HANDLE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"somethingfishyfishy"},"content":" // missing telegramHandle prefix","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_TELEGRAM_HANDLE_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_HANDLE_DESC_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_HANDLE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"LowXiSi"},"content":" + VALID_STUDENT_STATUS_BOB + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"LowXiSi"},"content":" // missing role prefix","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_HANDLE_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"somethingfishyfishy"},"content":" + EMAIL_DESC_BOB + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"LowXiSi"},"content":" + VALID_ROLE_PRESIDENT,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_TELEGRAM_HANDLE_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"LowXiSi"},"content":" + VALID_STUDENT_STATUS_BOB + VALID_ROLE_PRESIDENT,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + TELEGRAM_HANDLE_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"somethingfishyfishy"},"content":" + EMAIL_DESC_BOB + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"somethingfishyfishy"},"content":" // invalid telegramHandle","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_TELEGRAM_HANDLE_DESC","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"somethingfishyfishy"},"content":" + EMAIL_DESC_BOB + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"somethingfishyfishy"},"content":" + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN, TelegramHandle.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_HANDLE_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"somethingfishyfishy"},"content":" + INVALID_EMAIL_DESC + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"LowXiSi"},"content":" // invalid student status","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_HANDLE_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"somethingfishyfishy"},"content":" + EMAIL_DESC_BOB + INVALID_STUDENT_STATUS_DESC","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"LowXiSi"},"content":" + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN, StudentStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"LowXiSi"},"content":" // invalid role","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_HANDLE_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"somethingfishyfishy"},"content":" + EMAIL_DESC_BOB + STUDENT_STATUS_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"LowXiSi"},"content":" + INVALID_ROLE_DESC + VALID_ROLE_ADMIN, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + TELEGRAM_HANDLE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"LowXiSi"},"content":" + INVALID_STUDENT_STATUS_DESC + ROLE_DESC_PRESIDENT,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + TELEGRAM_HANDLE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"LowXiSi"},"content":" + STUDENT_STATUS_DESC_BOB + ROLE_DESC_PRESIDENT + ROLE_DESC_ADMIN,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"LowXiSi":48,"wuzengfu":1,"-":124,"somethingfishyfishy":45}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ROLE_DESC;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_STUDENT_STATUS_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_HANDLE_DESC;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ROLE_DESC_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_STATUS_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_HANDLE_DESC_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_HANDLE_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_HANDLE_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":" private static final String ROLE_EMPTY \u003d \" \" + PREFIX_ROLE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, \"1\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"somethingfishyfishy"},"content":" + INVALID_TELEGRAM_HANDLE_DESC, TelegramHandle.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"LowXiSi"},"content":" // invalid student status","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + INVALID_STUDENT_STATUS_DESC, StudentStatus.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + INVALID_ROLE_DESC, Role.MESSAGE_CONSTRAINTS); // invalid role","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, \"1\" + INVALID_TELEGRAM_HANDLE_DESC","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"somethingfishyfishy"},"content":" + EMAIL_DESC_AMY, TelegramHandle.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + ROLE_DESC_ADMIN + ROLE_DESC_PRESIDENT + ROLE_EMPTY, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + ROLE_DESC_ADMIN + ROLE_EMPTY + ROLE_DESC_PRESIDENT, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LowXiSi"},"content":" assertParseFailure(parser, \"1\" + ROLE_EMPTY + ROLE_DESC_ADMIN + ROLE_DESC_PRESIDENT, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"wuzengfu"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_STUDENT_STATUS_AMY","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"somethingfishyfishy"},"content":" + VALID_TELEGRAM_HANDLE_AMY, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"somethingfishyfishy"},"content":" String userInput \u003d targetIndex.getOneBased() + TELEGRAM_HANDLE_DESC_BOB + ROLE_DESC_PRESIDENT","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"LowXiSi"},"content":" + EMAIL_DESC_AMY + STUDENT_STATUS_DESC_AMY + NAME_DESC_AMY + ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"somethingfishyfishy"},"content":" .withTelegramHandle(VALID_TELEGRAM_HANDLE_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"somethingfishyfishy"},"content":" .withEmail(VALID_EMAIL_AMY).withStudentStatus(VALID_STUDENT_STATUS_AMY)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT, VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"somethingfishyfishy"},"content":" String userInput \u003d targetIndex.getOneBased() + TELEGRAM_HANDLE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"somethingfishyfishy"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"somethingfishyfishy"},"content":" .withTelegramHandle(VALID_TELEGRAM_HANDLE_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"somethingfishyfishy"},"content":" // telegramHandle","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"somethingfishyfishy"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"somethingfishyfishy"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTelegramHandle(VALID_TELEGRAM_HANDLE_AMY).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"LowXiSi"},"content":" // student status","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"LowXiSi"},"content":" userInput \u003d targetIndex.getOneBased() + STUDENT_STATUS_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"LowXiSi"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withStudentStatus(VALID_STUDENT_STATUS_AMY).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"LowXiSi"},"content":" userInput \u003d targetIndex.getOneBased() + ROLE_DESC_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"LowXiSi"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"LowXiSi"},"content":" // AddCommandParserTest#parse_repeatedNonRoleValue_failure()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"somethingfishyfishy"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_TELEGRAM_HANDLE_DESC + TELEGRAM_HANDLE_DESC_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"somethingfishyfishy"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_HANDLE_DESC_BOB + INVALID_TELEGRAM_HANDLE_DESC;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"somethingfishyfishy"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM_HANDLE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"somethingfishyfishy"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_HANDLE_DESC_AMY + STUDENT_STATUS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"somethingfishyfishy"},"content":" + ROLE_DESC_ADMIN + TELEGRAM_HANDLE_DESC_AMY","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"somethingfishyfishy"},"content":" + STUDENT_STATUS_DESC_AMY + EMAIL_DESC_AMY + ROLE_DESC_ADMIN","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"somethingfishyfishy"},"content":" + TELEGRAM_HANDLE_DESC_BOB + STUDENT_STATUS_DESC_BOB + EMAIL_DESC_BOB + ROLE_DESC_PRESIDENT;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"somethingfishyfishy"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM_HANDLE,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"somethingfishyfishy"},"content":" PREFIX_EMAIL, PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"somethingfishyfishy"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_TELEGRAM_HANDLE_DESC","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"somethingfishyfishy"},"content":" + INVALID_STUDENT_STATUS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"somethingfishyfishy"},"content":" + INVALID_TELEGRAM_HANDLE_DESC + INVALID_STUDENT_STATUS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"somethingfishyfishy"},"content":" Messages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"somethingfishyfishy"},"content":" PREFIX_TELEGRAM_HANDLE, PREFIX_EMAIL, PREFIX_STUDENT_STATUS));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"LowXiSi"},"content":" public void parse_resetRoles_failure() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"LowXiSi"},"content":" String userInput \u003d INDEX_THIRD_PERSON.getOneBased() + ROLE_EMPTY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"wuzengfu"},"content":" assertParseFailure(parser, userInput, Role.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"LowXiSi":29,"wuzengfu":5,"-":145,"somethingfishyfishy":36}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"somethingfishyfishy"},"content":" // private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"somethingfishyfishy"},"content":" private static final String INVALID_TELEGRAM_HANDLE \u003d \"+651234\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" private static final String INVALID_STUDENT_STATUS \u003d \"undergraduate 7\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" private static final String INVALID_ROLE \u003d \"#friend\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"somethingfishyfishy"},"content":" private static final String VALID_TELEGRAM_HANDLE \u003d \"123456\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" private static final String VALID_STUDENT_STATUS \u003d \"undergraduate 3\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" private static final String VALID_ROLE_1 \u003d \"Admin\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" private static final String VALID_ROLE_2 \u003d \"President\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"somethingfishyfishy"},"content":" // omitted as we are accepting any character as name, hence this INVALID_NAME no longer is invalid","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"somethingfishyfishy"},"content":" /*","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"somethingfishyfishy"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"somethingfishyfishy"},"content":" public void parseTelegramHandle_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"somethingfishyfishy"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTelegramHandle((String) null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"somethingfishyfishy"},"content":" public void parseTelegramHandle_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"somethingfishyfishy"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTelegramHandle(INVALID_TELEGRAM_HANDLE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"somethingfishyfishy"},"content":" public void parseTelegramHandle_validValueWithoutWhitespace_returnsTelegramHandle() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"somethingfishyfishy"},"content":" TelegramHandle expectedTelegramHandle \u003d new TelegramHandle(VALID_TELEGRAM_HANDLE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"somethingfishyfishy"},"content":" assertEquals(expectedTelegramHandle, ParserUtil.parseTelegramHandle(VALID_TELEGRAM_HANDLE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"somethingfishyfishy"},"content":" public void parseTelegramHandle_validValueWithWhitespace_returnsTrimmedTelegramHandle() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"somethingfishyfishy"},"content":" String telegramWithWhitespace \u003d WHITESPACE + VALID_TELEGRAM_HANDLE + WHITESPACE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"somethingfishyfishy"},"content":" TelegramHandle expectedTelegramHandle \u003d new TelegramHandle(VALID_TELEGRAM_HANDLE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"somethingfishyfishy"},"content":" assertEquals(expectedTelegramHandle, ParserUtil.parseTelegramHandle(telegramWithWhitespace));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseStudentStatus((String) null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"LowXiSi"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseStudentStatus(INVALID_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"LowXiSi"},"content":" StudentStatus expectedAddress \u003d new StudentStatus(VALID_STUDENT_STATUS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"LowXiSi"},"content":" assertEquals(expectedAddress, ParserUtil.parseStudentStatus(VALID_STUDENT_STATUS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"LowXiSi"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_STUDENT_STATUS + WHITESPACE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"LowXiSi"},"content":" StudentStatus expectedAddress \u003d new StudentStatus(VALID_STUDENT_STATUS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"LowXiSi"},"content":" assertEquals(expectedAddress, ParserUtil.parseStudentStatus(addressWithWhitespace));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"LowXiSi"},"content":" public void parseRole_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRole(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"LowXiSi"},"content":" public void parseRole_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"LowXiSi"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseRole(INVALID_ROLE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"LowXiSi"},"content":" public void parseRole_validValueWithoutWhitespace_returnsRole() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"LowXiSi"},"content":" Role expectedRole \u003d new Role(VALID_ROLE_1);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"LowXiSi"},"content":" assertEquals(expectedRole, ParserUtil.parseRole(VALID_ROLE_1));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"LowXiSi"},"content":" public void parseRole_validValueWithWhitespace_returnsTrimmedRole() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"LowXiSi"},"content":" String roleWithWhitespace \u003d WHITESPACE + VALID_ROLE_1 + WHITESPACE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"LowXiSi"},"content":" Role expectedRole \u003d new Role(VALID_ROLE_1);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"LowXiSi"},"content":" assertEquals(expectedRole, ParserUtil.parseRole(roleWithWhitespace));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"LowXiSi"},"content":" public void parseRoles_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRoles(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"LowXiSi"},"content":" public void parseRoles_collectionWithInvalidRoles_throwsParseException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"LowXiSi"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseRoles(Arrays.asList(VALID_ROLE_1, INVALID_ROLE)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"LowXiSi"},"content":" public void parseRoles_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"LowXiSi"},"content":" assertTrue(ParserUtil.parseRoles(Collections.emptyList()).isEmpty());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"LowXiSi"},"content":" public void parseRoles_collectionWithValidRoles_returnsRoleSet() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e actualRoleSet \u003d ParserUtil.parseRoles(Arrays.asList(VALID_ROLE_1, VALID_ROLE_2));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e expectedRoleSet \u003d new HashSet\u003cRole\u003e(Arrays.asList(new Role(VALID_ROLE_1), new Role(VALID_ROLE_2)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"wuzengfu"},"content":" assertEquals(expectedRoleSet, actualRoleSet);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"LowXiSi":33,"wuzengfu":2,"-":146,"somethingfishyfishy":18}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LowXiSi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"LowXiSi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"LowXiSi":6,"-":104}},{"path":"src/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"somethingfishyfishy"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withTelegramHandle(\"12345\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"LowXiSi"},"content":" .withEmail(\"alice@email.com\").withStudentStatus(\"undergraduate 1\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"LowXiSi":1,"-":83,"somethingfishyfishy":1}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_HANDLE_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getRoles().remove(0));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"somethingfishyfishy"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withTelegramHandle(VALID_TELEGRAM_HANDLE_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"somethingfishyfishy"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" .withStudentStatus(VALID_STUDENT_STATUS_BOB).withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"WinstonJin"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"somethingfishyfishy"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTelegramHandle(VALID_TELEGRAM_HANDLE_BOB).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"LowXiSi"},"content":" // different student status -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"LowXiSi"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"LowXiSi"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withRoles(VALID_ROLE_PRESIDENT).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"somethingfishyfishy"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", telegram handle\u003d\"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"somethingfishyfishy"},"content":" + ALICE.getTelegramHandle() + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"somethingfishyfishy"},"content":" + \", studentStatus\u003d\" + ALICE.getStudentStatus()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"LowXiSi"},"content":" + \", roles\u003d\" + ALICE.getRoles() + \", nickname\u003d\" + ALICE.getNickname() + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"LowXiSi":8,"WinstonJin":1,"-":86,"somethingfishyfishy":7}},{"path":"src/test/java/seedu/address/model/person/StudentStatusTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"LowXiSi"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"LowXiSi"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"LowXiSi"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"public class StudentStatusTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"LowXiSi"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e new StudentStatus(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LowXiSi"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":" public void constructor_invalidStudentStatus_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":" String invalidStudentStatus \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new StudentStatus(invalidStudentStatus));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" public void isValidStudentStatus() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" // null student status","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" assertThrows(NullPointerException.class, () -\u003e StudentStatus.isValidStudentStatus(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" // invalid student statuses","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LowXiSi"},"content":" assertFalse(StudentStatus.isValidStudentStatus(\"phd 2\")); // phd with year","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" assertFalse(StudentStatus.isValidStudentStatus(\"undergraduate 10\")); // year \u003e 6","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" // valid student statuses","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" assertTrue(StudentStatus.isValidStudentStatus(\"undergraduate 3\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" assertTrue(StudentStatus.isValidStudentStatus(\"phd\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"LowXiSi"},"content":" assertTrue(StudentStatus.isValidStudentStatus(\"masters\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" StudentStatus studentStatus \u003d new StudentStatus(\"undergraduate 1\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"LowXiSi"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" assertTrue(studentStatus.equals(new StudentStatus(\"undergraduate 1\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"LowXiSi"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" assertTrue(studentStatus.equals(studentStatus));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" assertFalse(studentStatus.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"LowXiSi"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"LowXiSi"},"content":" assertFalse(studentStatus.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" assertFalse(studentStatus.equals(new StudentStatus(\"phd\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"LowXiSi"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"LowXiSi":56}},{"path":"src/test/java/seedu/address/model/person/TelegramHandleTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"somethingfishyfishy"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"somethingfishyfishy"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"somethingfishyfishy"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"somethingfishyfishy"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"somethingfishyfishy"},"content":"public class TelegramHandleTest {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"somethingfishyfishy"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"somethingfishyfishy"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"somethingfishyfishy"},"content":" assertThrows(NullPointerException.class, () -\u003e new TelegramHandle(null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"somethingfishyfishy"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"somethingfishyfishy"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"somethingfishyfishy"},"content":" public void constructor_invalidTelegramHandle_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"somethingfishyfishy"},"content":" String invalidTelegramHandle \u003d \"\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"somethingfishyfishy"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new TelegramHandle(invalidTelegramHandle));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"somethingfishyfishy"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"somethingfishyfishy"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"somethingfishyfishy"},"content":" public void isValidTelegramHandle() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"somethingfishyfishy"},"content":" // null telegram Handle","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"somethingfishyfishy"},"content":" assertThrows(NullPointerException.class, () -\u003e TelegramHandle.isValidTelegramHandle(null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"somethingfishyfishy"},"content":" // invalid telegram Handles","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"somethingfishyfishy"},"content":" assertFalse(TelegramHandle.isValidTelegramHandle(\"\")); // empty string","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"somethingfishyfishy"},"content":" assertFalse(TelegramHandle.isValidTelegramHandle(\" \")); // spaces only","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"somethingfishyfishy"},"content":" assertFalse(TelegramHandle.isValidTelegramHandle(\"91\")); // less than 3 numbers","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"somethingfishyfishy"},"content":" assertFalse(TelegramHandle.isValidTelegramHandle(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"somethingfishyfishy"},"content":" assertFalse(TelegramHandle.isValidTelegramHandle(\"@93121534\")); // contains @","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"somethingfishyfishy"},"content":" // valid telegrams","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"somethingfishyfishy"},"content":" assertTrue(TelegramHandle.isValidTelegramHandle(\"911\")); // exactly 3 numbers","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"somethingfishyfishy"},"content":" assertTrue(TelegramHandle.isValidTelegramHandle(\"93121534\"));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"somethingfishyfishy"},"content":" assertTrue(TelegramHandle.isValidTelegramHandle(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"somethingfishyfishy"},"content":" assertTrue(TelegramHandle.isValidTelegramHandle(\"phone\")); // non-numeric","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"somethingfishyfishy"},"content":" assertTrue(TelegramHandle.isValidTelegramHandle(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"somethingfishyfishy"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"somethingfishyfishy"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"somethingfishyfishy"},"content":" public void equals() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":" TelegramHandle telegramHandle \u003d new TelegramHandle(\"999\");","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"somethingfishyfishy"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"somethingfishyfishy"},"content":" assertTrue(telegramHandle.equals(new TelegramHandle(\"999\")));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"somethingfishyfishy"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"somethingfishyfishy"},"content":" assertTrue(telegramHandle.equals(telegramHandle));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"somethingfishyfishy"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"somethingfishyfishy"},"content":" assertFalse(telegramHandle.equals(null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"somethingfishyfishy"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"somethingfishyfishy"},"content":" assertFalse(telegramHandle.equals(5.0f));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"somethingfishyfishy"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"somethingfishyfishy"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"somethingfishyfishy"},"content":" assertFalse(telegramHandle.equals(new TelegramHandle(\"995\")));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"somethingfishyfishy"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"somethingfishyfishy"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"somethingfishyfishy":61}},{"path":"src/test/java/seedu/address/model/person/UniquePersonListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class UniquePersonListTest {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UniquePersonList uniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.contains(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(ALICE));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"LowXiSi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(uniquePersonList.contains(editedAlice));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.add(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.add(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(null, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPerson(ALICE, null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.setPerson(ALICE, ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"LowXiSi"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(editedAlice);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" uniquePersonList.setPerson(ALICE, BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" uniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPerson(ALICE, BOB));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.remove(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" uniquePersonList.remove(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((UniquePersonList) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(expectedUniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePersonList.setPersons((List\u003cPerson\u003e) null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" uniquePersonList.add(ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" uniquePersonList.setPersons(personList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedUniquePersonList.add(BOB);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e listWithDuplicatePersons \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniquePersonList.setPersons(listWithDuplicatePersons));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -\u003e uniquePersonList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertEquals(uniquePersonList.asUnmodifiableObservableList().toString(), uniquePersonList.toString());","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"LowXiSi":6,"-":171}},{"path":"src/test/java/seedu/address/model/tag/RoleTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wuzengfu"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wuzengfu"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wuzengfu"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":"public class RoleTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":" assertThrows(NullPointerException.class, () -\u003e new Role(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":" public void constructor_invalidRoleName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"LowXiSi"},"content":" String invalidRoleName \u003d \"friends\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"LowXiSi"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Role(invalidRoleName));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"wuzengfu"},"content":" public void isValidRoleName() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"wuzengfu"},"content":" // null tag name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"wuzengfu"},"content":" assertThrows(NullPointerException.class, () -\u003e Role.isValidRoleName(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"wuzengfu"},"content":" // invalid tag name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"wuzengfu"},"content":" assertFalse(Role.isValidRoleName(\"friends\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"wuzengfu"},"content":" assertFalse(Role.isValidRoleName(\" \"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"wuzengfu"},"content":" assertFalse(Role.isValidRoleName(\"admin\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"wuzengfu"},"content":" assertFalse(Role.isValidRoleName(\"marketing\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"wuzengfu"},"content":" // valid tag name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"President\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Vice President\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Admin\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Marketing\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Events (internal)\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"Events (external)\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" assertTrue(Role.isValidRoleName(\"External Relations\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wuzengfu"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"LowXiSi":3,"wuzengfu":40}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"wuzengfu"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wuzengfu"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"wuzengfu"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.model.util.SampleDataUtil.getRoleSet;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"wuzengfu"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"wuzengfu"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"wuzengfu"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"wuzengfu"},"content":" private Person[] samplePersons \u003d new Person[] {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Alex Yeoh\"), new TelegramHandle(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 1\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"President\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Bernice Yu\"), new TelegramHandle(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 3\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"President\", \"Admin\"), new Nickname(\"\u003cnn space\u003e\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new TelegramHandle(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"masters\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Marketing\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"David Li\"), new TelegramHandle(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 4\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Admin\"), new Nickname(\"\u003cnn space\u003e\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new TelegramHandle(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"phd\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"Events (internal)\"), new Nickname(\"\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"somethingfishyfishy"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new TelegramHandle(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"LowXiSi"},"content":" new StudentStatus(\"undergraduate 4\"),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" getRoleSet(\"External Relations\"), new Nickname(\"\"))","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" };","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" public void getRoleSet_success() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"wuzengfu"},"content":" Role[] roles \u003d {new Role(\"Admin\"), new Role(\"Vice President\")};","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" assertTrue(List.of(roles).containsAll(getRoleSet(\"Admin\", \"Vice President\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" assertTrue(List.of(roles).containsAll(getRoleSet(\"Vice President\", \"Admin\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"LowXiSi"},"content":" assertTrue(List.of(roles).containsAll(getRoleSet(\"Vice President\", \"Admin\", \"Admin\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"wuzengfu"},"content":" public void getSamplePersons_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wuzengfu"},"content":" assertTrue(List.of(samplePersons).containsAll(List.of(SampleDataUtil.getSamplePersons())));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wuzengfu"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wuzengfu"},"content":" public void getSampleAddressBook_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wuzengfu"},"content":" for (Person samplePerson : samplePersons) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"wuzengfu"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"wuzengfu"},"content":" assertEquals(sampleAb, SampleDataUtil.getSampleAddressBook());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"wuzengfu"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"wuzengfu"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"LowXiSi":18,"wuzengfu":40,"somethingfishyfishy":7}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"somethingfishyfishy"},"content":" private static final String INVALID_TELEGRAM_HANDLE \u003d \"+651234\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"LowXiSi"},"content":" private static final String INVALID_STUDENT_STATUS \u003d \" \";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" private static final String INVALID_ROLES \u003d \"Freeloader\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"somethingfishyfishy"},"content":" private static final String VALID_TELEGRAM_HANDLE \u003d BENSON.getTelegramHandle().toString();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LowXiSi"},"content":" private static final String VALID_STUDENT_STATUS \u003d BENSON.getStudentStatus().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" private static final List\u003cJsonAdaptedRole\u003e VALID_ROLES \u003d BENSON.getRoles().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"LowXiSi"},"content":" .map(JsonAdaptedRole::new)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"cth06-Github"},"content":" private static final String VALID_NICKNAME \u003d BENSON.getNickname().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"somethingfishyfishy"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_TELEGRAM_HANDLE, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"somethingfishyfishy"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_TELEGRAM_HANDLE, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"somethingfishyfishy"},"content":" public void toModelType_invalidTelegramHandle_throwsIllegalValueException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"somethingfishyfishy"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_TELEGRAM_HANDLE, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"somethingfishyfishy"},"content":" String expectedMessage \u003d TelegramHandle.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"somethingfishyfishy"},"content":" public void toModelType_nullTelegramHandle_throwsIllegalValueException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"wuzengfu"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"somethingfishyfishy"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, TelegramHandle.class.getSimpleName());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"somethingfishyfishy"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM_HANDLE, INVALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"somethingfishyfishy"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM_HANDLE, null, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"LowXiSi"},"content":" public void toModelType_invalidStudentStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"somethingfishyfishy"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM_HANDLE, VALID_EMAIL, INVALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"LowXiSi"},"content":" String expectedMessage \u003d StudentStatus.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LowXiSi"},"content":" public void toModelType_nullStudentStatus_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"somethingfishyfishy"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM_HANDLE, VALID_EMAIL, null,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"LowXiSi"},"content":" VALID_ROLES, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"LowXiSi"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, StudentStatus.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"LowXiSi"},"content":" public void toModelType_invalidRoles_throwsIllegalValueException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"LowXiSi"},"content":" List\u003cJsonAdaptedRole\u003e invalidRoles \u003d new ArrayList\u003c\u003e(VALID_ROLES);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"LowXiSi"},"content":" invalidRoles.add(new JsonAdaptedRole(INVALID_ROLES));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"somethingfishyfishy"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_TELEGRAM_HANDLE, VALID_EMAIL, VALID_STUDENT_STATUS,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"LowXiSi"},"content":" invalidRoles, VALID_NICKNAME);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"LowXiSi":22,"cth06-Github":1,"wuzengfu":1,"-":81,"somethingfishyfishy":15}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"somethingfishyfishy"},"content":" descriptor.setTelegramHandle(person.getTelegramHandle());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"LowXiSi"},"content":" descriptor.setStudentStatus(person.getStudentStatus());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"LowXiSi"},"content":" descriptor.setRoles(person.getRoles());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"somethingfishyfishy"},"content":" * Sets the {@code TelegramHandle} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"somethingfishyfishy"},"content":" public EditPersonDescriptorBuilder withTelegramHandle(String telegramHandle) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"somethingfishyfishy"},"content":" descriptor.setTelegramHandle(new TelegramHandle(telegramHandle));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"LowXiSi"},"content":" * Sets the {@code StudentStatus} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"LowXiSi"},"content":" public EditPersonDescriptorBuilder withStudentStatus(String studentStatus) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"LowXiSi"},"content":" descriptor.setStudentStatus(new StudentStatus(studentStatus));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"LowXiSi"},"content":" * Parses the {@code roles} into a {@code Set\u003cRole\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LowXiSi"},"content":" public EditPersonDescriptorBuilder withRoles(String... roles) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e roleSet \u003d Stream.of(roles).map(Role::new).collect(Collectors.toSet());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"LowXiSi"},"content":" descriptor.setRoles(roleSet);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"LowXiSi":10,"wuzengfu":2,"-":71,"somethingfishyfishy":5}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"wuzengfu"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"import seedu.address.model.person.StudentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"somethingfishyfishy"},"content":"import seedu.address.model.person.TelegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"cth06-Github"},"content":"import seedu.address.model.tag.Nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LowXiSi"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"85355255\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LowXiSi"},"content":" public static final String DEFAULT_STUDENT_STATUS \u003d \"undergraduate 1\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"LowXiSi"},"content":" public static final String[] DEFAULT_ROLES \u003d {\"Admin\"};","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"cth06-Github"},"content":" public static final String DEFAULT_NICKNAME \u003d \"\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"somethingfishyfishy"},"content":" private TelegramHandle telegramHandle;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" private StudentStatus studentStatus;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"wuzengfu"},"content":" private Set\u003cRole\u003e roles;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"cth06-Github"},"content":" private Nickname nickname;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"somethingfishyfishy"},"content":" telegramHandle \u003d new TelegramHandle(DEFAULT_TELEGRAM);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" studentStatus \u003d new StudentStatus(DEFAULT_STUDENT_STATUS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"LowXiSi"},"content":" roles \u003d new HashSet\u003c\u003e(Arrays.stream(DEFAULT_ROLES).map(Role::new).toList());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"cth06-Github"},"content":" nickname \u003d new Nickname(DEFAULT_NICKNAME);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"somethingfishyfishy"},"content":" telegramHandle \u003d personToCopy.getTelegramHandle();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" studentStatus \u003d personToCopy.getStudentStatus();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" roles \u003d new HashSet\u003c\u003e(personToCopy.getRoles());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"cth06-Github"},"content":" nickname \u003d personToCopy.getNickname();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"LowXiSi"},"content":" * Parses the {@code roles} into a {@code Set\u003cRole\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"LowXiSi"},"content":" public PersonBuilder withRoles(String ... tags) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"LowXiSi"},"content":" this.roles \u003d SampleDataUtil.getRoleSet(tags);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LowXiSi"},"content":" public PersonBuilder withStudentStatus(String studentStatus) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LowXiSi"},"content":" this.studentStatus \u003d new StudentStatus(studentStatus);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"somethingfishyfishy"},"content":" * Sets the {@code TelegramHandle} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"somethingfishyfishy"},"content":" public PersonBuilder withTelegramHandle(String telegramHandle) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"somethingfishyfishy"},"content":" this.telegramHandle \u003d new TelegramHandle(telegramHandle);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"cth06-Github"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"cth06-Github"},"content":" * Sets the {@code Nickname} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"cth06-Github"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"cth06-Github"},"content":" public PersonBuilder withNickname(String nickname) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"cth06-Github"},"content":" this.nickname \u003d new Nickname(nickname);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"cth06-Github"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"cth06-Github"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"cth06-Github"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"somethingfishyfishy"},"content":" return new Person(name, telegramHandle, email, studentStatus, roles, nickname);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"LowXiSi":14,"cth06-Github":13,"wuzengfu":3,"-":73,"somethingfishyfishy":8}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"wuzengfu"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ROLE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_STATUS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM_HANDLE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"wuzengfu"},"content":"import seedu.address.model.tag.Role;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"somethingfishyfishy"},"content":" sb.append(PREFIX_TELEGRAM_HANDLE + person.getTelegramHandle().value + \" \");","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LowXiSi"},"content":" sb.append(PREFIX_STUDENT_STATUS + person.getStudentStatus().value + \" \");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" person.getRoles().stream().forEach(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" s -\u003e sb.append(PREFIX_ROLE + s.roleName + \" \")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"somethingfishyfishy"},"content":" descriptor.getTelegramHandle().ifPresent(phone -\u003e sb.append(PREFIX_TELEGRAM_HANDLE)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"somethingfishyfishy"},"content":" .append(phone.value).append(\" \"));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" descriptor.getStudentStatus()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"LowXiSi"},"content":" .ifPresent(studentStatus -\u003e sb.append(PREFIX_STUDENT_STATUS).append(studentStatus.value).append(\" \"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"LowXiSi"},"content":" if (descriptor.getRoles().isPresent()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"LowXiSi"},"content":" Set\u003cRole\u003e roles \u003d descriptor.getRoles().get();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wuzengfu"},"content":" if (roles.isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"wuzengfu"},"content":" sb.append(PREFIX_ROLE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"wuzengfu"},"content":" roles.forEach(s -\u003e sb.append(PREFIX_ROLE).append(s.roleName).append(\" \"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"LowXiSi":7,"wuzengfu":6,"-":47,"somethingfishyfishy":4}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_ADMIN;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ROLE_PRESIDENT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"LowXiSi"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_STATUS_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_HANDLE_AMY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"somethingfishyfishy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_HANDLE_BOB;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"LowXiSi"},"content":" .withStudentStatus(\"undergraduate 1\").withEmail(\"alice@example.com\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"somethingfishyfishy"},"content":" .withTelegramHandle(\"94351253\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Admin\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"LowXiSi"},"content":" .withStudentStatus(\"undergraduate 2\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"somethingfishyfishy"},"content":" .withEmail(\"johnd@example.com\").withTelegramHandle(\"98765432\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"President\", \"Marketing\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withTelegramHandle(\"95352563\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"heinz@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"undergraduate 3\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"External Relations\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withTelegramHandle(\"87652533\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"cornelia@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"undergraduate 4\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Events (external)\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withTelegramHandle(\"9482224\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"werner@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"undergraduate 5\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Events (internal)\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withTelegramHandle(\"9482427\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"lydia@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"masters\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Events (external)\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withTelegramHandle(\"9482442\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"wuzengfu"},"content":" .withEmail(\"anna@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"wuzengfu"},"content":" .withStudentStatus(\"phd\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"LowXiSi"},"content":" .withRoles(\"Vice President\")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"wuzengfu"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withTelegramHandle(\"8482424\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"LowXiSi"},"content":" .withEmail(\"stefan@example.com\").withStudentStatus(\"undergraduate 6\").build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withTelegramHandle(\"8482131\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LowXiSi"},"content":" .withEmail(\"hans@example.com\").withStudentStatus(\"undergraduate 1\").build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"somethingfishyfishy"},"content":" .withTelegramHandle(VALID_TELEGRAM_HANDLE_AMY)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"LowXiSi"},"content":" .withEmail(VALID_EMAIL_AMY).withStudentStatus(VALID_STUDENT_STATUS_AMY).withRoles(VALID_ROLE_ADMIN).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"somethingfishyfishy"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"somethingfishyfishy"},"content":" .withTelegramHandle(VALID_TELEGRAM_HANDLE_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"LowXiSi"},"content":" .withEmail(VALID_EMAIL_BOB).withStudentStatus(VALID_STUDENT_STATUS_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"LowXiSi"},"content":" .withRoles(VALID_ROLE_PRESIDENT, VALID_ROLE_ADMIN)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"LowXiSi":18,"wuzengfu":15,"-":46,"somethingfishyfishy":15}}] diff --git a/AY2425S1-CS2103-F09-1_tp_master/commits.json b/AY2425S1-CS2103-F09-1_tp_master/commits.json index 025c558c..98e20bfd 100644 --- a/AY2425S1-CS2103-F09-1_tp_master/commits.json +++ b/AY2425S1-CS2103-F09-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"LowXiSi":[{"date":"2024-09-30","commitResults":[{"hash":"667e5abd86a204945b25aa73ce70ae07a3850cef","isMergeCommit":false,"messageTitle":"Update AboutXiSi","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":5}}}]},{"date":"2024-10-03","commitResults":[{"hash":"1aafc3a1ea3cf0d25e0edb64760794811bebc192","isMergeCommit":false,"messageTitle":"Update non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":0}}},{"hash":"9c6486fd2c9a2802e882426c7e8cd58cdf4acad6","isMergeCommit":false,"messageTitle":"Update use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":9}}}]},{"date":"2024-10-05","commitResults":[{"hash":"99e1652b10ed71b44f0c511a2159f0ea389bc230","isMergeCommit":true,"messageTitle":"Merge pull request #37 from WinstonJin/developer-guide","messageBody":"3 Update Developer Guide: Target User Profiles, Value Proposition, User Stories","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"0a61065e3c330dbef396f4e129819d7f1cc428f9","isMergeCommit":false,"messageTitle":"Add support for student status","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":138,"deletions":133},"test-code":{"insertions":207,"deletions":199}}},{"hash":"b1b27903ff435107fa23a5c8d22b6708ebf326c9","isMergeCommit":true,"messageTitle":"Merge pull request #53 from WinstonJin/Telegram-Handle","messageBody":"Telegram Handle","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"f3898f4a65123ad7149dd99b0c10dc571085fe40","isMergeCommit":false,"messageTitle":"Resolve issues from previous merge","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":134,"deletions":135},"other":{"insertions":3,"deletions":3},"test-code":{"insertions":252,"deletions":238}}}]}],"cth06-Github":[{"date":"2024-09-21","commitResults":[{"hash":"97725e51362b07e5e4a13b4e3ac82363f54e05c0","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2425S1-CS2103-F09-1/switch-docs-to-markbind","messageBody":"Merge Switch docs to markbind branch to master branch","fileTypesAndContributionMap":{}},{"hash":"f373b489ad88faf9a3b9294b31e953e8ae9cc08a","isMergeCommit":false,"messageTitle":"Update default.md with product name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1d5dbdcb738b7bff325d997071feb38d01b67e29","isMergeCommit":false,"messageTitle":"Update README.md with codecov status","messageBody":"Testing if there is codecov status appearing","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"554165507f854a82ae966b794937bff3ec689d9b","isMergeCommit":false,"messageTitle":"Remove codecov status in README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"e21fbc818f8b910b33476692bfac04629706b073","isMergeCommit":false,"messageTitle":"Add codecov status in README.md","messageBody":"Trying another way apart from what was stated in the SE website.","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-30","commitResults":[{"hash":"3903791f0db9546264dc78db6a1fa10936bd3461","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":47}}},{"hash":"6c35f4889e14452e53c5cee0361d61244c41704e","isMergeCommit":false,"messageTitle":"Update AboutUs.md TH","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":3}}},{"hash":"c8d43335e0c8f3e5cf193991dcec85866d75c21b","isMergeCommit":false,"messageTitle":"Update AboutUs.md new line","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-05","commitResults":[{"hash":"6412a0739054505a305c9b179c9d08e07979b5f7","isMergeCommit":false,"messageTitle":"Update site-wide settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-09","commitResults":[{"hash":"fae593ec9a22f8a87bf59a198c17644777c2b2fe","isMergeCommit":false,"messageTitle":"Add nickname function (partial)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":139,"deletions":22},"test-code":{"insertions":14,"deletions":9}}},{"hash":"75de3cf793b453d0b595bbabb149c570f11eb37f","isMergeCommit":false,"messageTitle":"Allow nickname optional","messageBody":"Add command currently makes the -nn tag compulsory, if not mistaken. For\nempty nicknames, the GUI shows them as an empty line below the email. To\nallow nicknames to be optional when writing the add command, and for the\nnickname component to only be shown if the nickname is not an empty\nString, let\u0027s\n\n* Change the nickname component in fxml file as a FlowPane rather than a\n Label\n* Change the code in AddCommandParser.java where\n arMultimap.getValue(PREFIX_NICKNAME).orElse(\"\") rather than .get() so\n that an empty Optional object returned will be seen as a empty String\n return to alow for parsing in parseNickname function\n\nThis are the main changes to allow nickname to be an optional\nrequirement in Add Command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":28}}},{"hash":"37244bed59ee40ce98b95a21d8afec662b882a4e","isMergeCommit":false,"messageTitle":"Edit code for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"c24c7922e3759346632fff959a689f7cc24f5bae","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"Errors occur due to nickname field being missing in the creation of\nPerosn object. Edit it to include nickname field (psudo-optional for\nnow).\n","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":3}}},{"hash":"844ec7054ce76528de1751cb474d029ceaf3d707","isMergeCommit":false,"messageTitle":"Update to try pass CI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":5}}}]}],"wuzengfu":[{"date":"2024-09-30","commitResults":[{"hash":"6fc1084134562e6d951e6ed3251bd88780b384a7","isMergeCommit":false,"messageTitle":"Update Zengfu details for AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"6a56a7bea9afb12f4c47d8740f8116745caf56ee","isMergeCommit":false,"messageTitle":"Update Readme.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":11}}}]},{"date":"2024-10-07","commitResults":[{"hash":"7aa6624fc52f42cbf31c459f72031644924402bf","isMergeCommit":false,"messageTitle":"Add zengfu.md to team profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}}]},{"date":"2024-10-09","commitResults":[{"hash":"3f8e7cebaeaba0f0a175e31fe322ddb2a3a1465c","isMergeCommit":false,"messageTitle":"Modify validations on tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":11}}},{"hash":"f775c701d5bf83330e56e0768c5037a8d20355f3","isMergeCommit":false,"messageTitle":"Make tags a compulsory parameter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"fe5cfdef55a0de1341b72e4d06e2d01c57929ec3","isMergeCommit":false,"messageTitle":"Add and modify test cases for tag","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":113,"deletions":84}}},{"hash":"0ed36faa4b1a10eeedbb6d396c9554b64ff34779","isMergeCommit":false,"messageTitle":"Add test cases for SampleDataUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}},{"hash":"4c3bf5cd25952e8cf91f59dd68b195da4120a343","isMergeCommit":false,"messageTitle":"Add more test cases for SampleDataUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":45,"deletions":3}}}]},{"date":"2024-10-10","commitResults":[{"hash":"7f5ce5eeeb42d6d4d557ddfc5a5829084201f7b8","isMergeCommit":false,"messageTitle":"Rename Tag.java to Role.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":67},"other":{"insertions":19,"deletions":19},"test-code":{"insertions":86,"deletions":86}}},{"hash":"0ee9268f71ee1cd10fa60c5ffa4fac16c4450123","isMergeCommit":false,"messageTitle":"Update UserGuide.md to align with Role parameter","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":16}}},{"hash":"dcca8bd35e957d45f27dfd902b9a341358e69a19","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-role-attribute-for-person","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"52ab4c5d9f6b27514234fb14faaf2e037e00ba80","isMergeCommit":true,"messageTitle":"Merge pull request #50 from wuzengfu/add-role-attribute-for-person","messageBody":"Add role attribute for person","fileTypesAndContributionMap":{}},{"hash":"8d1f3b14fe54cb8d7d3f4a8cfa1b96696b13a96d","isMergeCommit":false,"messageTitle":"Fix compiling errors and styling issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12},"test-code":{"insertions":9,"deletions":8}}},{"hash":"54de07a8c92c1723e44cf19a79e21285042ea974","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027 into fork/LowXiSi/branch-add-student-status","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/AddCommand.java\n#\tsrc/main/java/seedu/address/logic/commands/EditCommand.java\n#\tsrc/main/java/seedu/address/logic/parser/AddCommandParser.java\n#\tsrc/main/java/seedu/address/logic/parser/CliSyntax.java\n#\tsrc/main/java/seedu/address/logic/parser/EditCommandParser.java\n#\tsrc/main/java/seedu/address/logic/parser/ParserUtil.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/main/java/seedu/address/model/util/SampleDataUtil.java\n#\tsrc/main/java/seedu/address/storage/JsonAdaptedPerson.java\n#\tsrc/main/java/seedu/address/ui/PersonCard.java\n#\tsrc/main/resources/view/PersonListCard.fxml\n#\tsrc/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json\n#\tsrc/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/logic/LogicManagerTest.java\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.java\n#\tsrc/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java\n#\tsrc/test/java/seedu/address/logic/parser/AddCommandParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/EditCommandParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/ParserUtilTest.java\n#\tsrc/test/java/seedu/address/model/AddressBookTest.java\n#\tsrc/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java\n#\tsrc/test/java/seedu/address/model/person/PersonTest.java\n#\tsrc/test/java/seedu/address/model/person/UniquePersonListTest.java\n#\tsrc/test/java/seedu/address/storage/JsonAdaptedPersonTest.java\n#\tsrc/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/PersonUtil.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}}]}],"WinstonJin":[{"date":"2024-09-30","commitResults":[{"hash":"de3698625d5dbbc4403cb8b0dd5c6e0972d0cb77","isMergeCommit":false,"messageTitle":"Edit AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":43}}},{"hash":"0d5fa5e3c068f4aa79b5ebdf7fa0d9ee83ad8247","isMergeCommit":true,"messageTitle":"Merge pull request #23 from wuzengfu/update-aboutus-zengfu","messageBody":"Update Zengfu details for AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"8d361229d511dbbd2d1e0c4cd583cd27e9e8c570","isMergeCommit":true,"messageTitle":"Merge pull request #24 from somethingfishyfishy/branch-UpdateAboutErnest","messageBody":"Update AboutErnest","fileTypesAndContributionMap":{}},{"hash":"54c40b231062061a2f2bf584d6a51934a443bdbe","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into about-us-edit","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4472eb3daf68f236fc22dddc543ca8642e48000a","isMergeCommit":true,"messageTitle":"Merge pull request #25 from WinstonJin/about-us-edit","messageBody":"Update AboutUs Winston","fileTypesAndContributionMap":{}},{"hash":"53bd9f26a36418e1d35c7b32b05f1c7ceeda26e9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-docs-branch","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ea73c46d118c94196e0ec8d9b5ec8f530ca17361","isMergeCommit":true,"messageTitle":"Merge pull request #26 from cth06-Github/update-docs-branch","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"b447d16f5bc8b3c5f3d4a5cdfefbc4cfe6711805","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AboutXiSi","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0d7e1b35c5699f167ae752adea4083ac1055748c","isMergeCommit":true,"messageTitle":"Merge pull request #27 from LowXiSi/branch-AboutXiSi","messageBody":"Update AboutXiSi","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"b52e1d62e5737fa2e30c378f96f2c97c7426aa91","isMergeCommit":true,"messageTitle":"Merge pull request #35 from wuzengfu/update-readme","messageBody":"Update Readme.md","fileTypesAndContributionMap":{}},{"hash":"464e8f3f493cadc134e912fb45913582901eadef","isMergeCommit":false,"messageTitle":"Update Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":15}}}]},{"date":"2024-10-05","commitResults":[{"hash":"1903d1bf13c0c208f037e773afbfecf7785a1820","isMergeCommit":true,"messageTitle":"Merge pull request #38 from LowXiSi/branch-Non-functional-requirements","messageBody":"Update non-functional requirements","fileTypesAndContributionMap":{}},{"hash":"b0c961eabf0ecf3a6debb59293ada578b967c464","isMergeCommit":true,"messageTitle":"Merge pull request #41 from cth06-Github/site-update-branch","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"8e180183ad48bc5d8b740e4d103506016c6f60fe","isMergeCommit":false,"messageTitle":"Change Phone to Telegram Handle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":136,"deletions":133},"test-code":{"insertions":190,"deletions":187}}},{"hash":"0f364319f20a7d21658409a6e328660511416b84","isMergeCommit":false,"messageTitle":"Edit PersonListCard.fxml to show GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"e44a4d908fb7ca33dacea50137af695450f822f0","isMergeCommit":true,"messageTitle":"Merge pull request #44 from wuzengfu/add-zengfu-profile","messageBody":"Add zengfu.md to team profile","fileTypesAndContributionMap":{}},{"hash":"f0b63f3c6bbb67223a536c44438fa5392062ac7b","isMergeCommit":true,"messageTitle":"Merge pull request #49 from cth06-Github/nickname-v1.2-branch","messageBody":"Merge Nickname v1.2 branch","fileTypesAndContributionMap":{}},{"hash":"07e3c693a1ba189e04e8b3fc59c78a651b9c3fb8","isMergeCommit":true,"messageTitle":"Merge pull request #55 from wuzengfu/fix-compile-error-and-styling-issues","messageBody":"Fix compiling errors and styling issues","fileTypesAndContributionMap":{}},{"hash":"96aef8941c0bd9b8132daf4bccaf253db1a3cb45","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Telegram-Handle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"65f95055c3e051e1d38e90be08269bf95b2b8ee8","isMergeCommit":true,"messageTitle":"Merge pull request #52 from LowXiSi/branch-add-student-status","messageBody":"Add support for student status","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"7b6f9c85153ae77d02b59b22245e24e15025c1f8","isMergeCommit":true,"messageTitle":"Merge pull request #57 from LowXiSi/branch-resolve-merge-issues","messageBody":"Resolve issues from previous merge","fileTypesAndContributionMap":{}}]}],"somethingfishyfishy":[{"date":"2024-09-30","commitResults":[{"hash":"11ae12fccf718470ff311f0ce413dc193c7f8906","isMergeCommit":false,"messageTitle":"Update AboutErnest","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":0}}}]},{"date":"2024-10-05","commitResults":[{"hash":"c861bbb9ca2e7780b0069ee6dfa22976a3459f42","isMergeCommit":false,"messageTitle":"Correct github username","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"dc8197abf6c08c62fe4a7b03babbaad0fb85c005","isMergeCommit":true,"messageTitle":"Merge pull request #39 from LowXiSi/branch-Update-use-cases","messageBody":"Update use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"b3ff7c83e89bebf41c0d4aa96c6fece0c1b1307d","isMergeCommit":false,"messageTitle":"Added somethingfishyfishy.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}},{"hash":"67540a04d904d6f20a6bf3a86ded1bedd805b7b6","isMergeCommit":true,"messageTitle":"Merge pull request #1 from somethingfishyfishy/branch-UpdateAboutErnest","messageBody":"Added somethingfishyfishy.md","fileTypesAndContributionMap":{}},{"hash":"67bda16eafbb4a6ed50a91e883fc404a1824db0a","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":15}}},{"hash":"ff75230c2e4fec35f60fca5903a0762fe4251dc3","isMergeCommit":true,"messageTitle":"Merge pull request #42 from somethingfishyfishy/branch-UpdateDGUseCases","messageBody":"Update DG - Product scope \u0026 use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"f4ca3070771757bf039bd9ed4ad5258608fc81e7","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"Fix Tse Hui\u0027s image description","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"LowXiSi":{"docs":94,"functional-code":247,"test-code":378,"other":3},"cth06-Github":{"docs":9,"functional-code":109,"test-code":15},"wuzengfu":{"docs":77,"functional-code":74,"test-code":130},"WinstonJin":{"docs":68,"functional-code":116,"test-code":129},"somethingfishyfishy":{"docs":78,"functional-code":0,"test-code":0}},"authorContributionVariance":{"LowXiSi":42722.312,"cth06-Github":3583.8096,"wuzengfu":11302.381,"WinstonJin":18301.945,"somethingfishyfishy":336.35742},"authorDisplayNameMap":{"LowXiSi":"CS2103-F09-1 LOW ..I SI","cth06-Github":"CS2103-F09-1 CHUA.. HUI","wuzengfu":"CS2103-F09-1 WU Z..NGFU","WinstonJin":"CS2103-F09-1 JIN ..STON","somethingfishyfishy":"CS2103-F09-1 ERNE..RONG"}} +{"authorDailyContributionsMap":{"LowXiSi":[{"date":"2024-09-30","commitResults":[{"hash":"667e5abd86a204945b25aa73ce70ae07a3850cef","isMergeCommit":false,"messageTitle":"Update AboutXiSi","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":5}}}]},{"date":"2024-10-03","commitResults":[{"hash":"1aafc3a1ea3cf0d25e0edb64760794811bebc192","isMergeCommit":false,"messageTitle":"Update non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":0}}},{"hash":"9c6486fd2c9a2802e882426c7e8cd58cdf4acad6","isMergeCommit":false,"messageTitle":"Update use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":9}}}]},{"date":"2024-10-05","commitResults":[{"hash":"99e1652b10ed71b44f0c511a2159f0ea389bc230","isMergeCommit":true,"messageTitle":"Merge pull request #37 from WinstonJin/developer-guide","messageBody":"3 Update Developer Guide: Target User Profiles, Value Proposition, User Stories","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"0a61065e3c330dbef396f4e129819d7f1cc428f9","isMergeCommit":false,"messageTitle":"Add support for student status","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":138,"deletions":133},"test-code":{"insertions":207,"deletions":199}}},{"hash":"b1b27903ff435107fa23a5c8d22b6708ebf326c9","isMergeCommit":true,"messageTitle":"Merge pull request #53 from WinstonJin/Telegram-Handle","messageBody":"Telegram Handle","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"f3898f4a65123ad7149dd99b0c10dc571085fe40","isMergeCommit":false,"messageTitle":"Resolve issues from previous merge","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":134,"deletions":135},"other":{"insertions":3,"deletions":3},"test-code":{"insertions":252,"deletions":238}}}]}],"cth06-Github":[{"date":"2024-09-21","commitResults":[{"hash":"97725e51362b07e5e4a13b4e3ac82363f54e05c0","isMergeCommit":true,"messageTitle":"Merge pull request #1 from AY2425S1-CS2103-F09-1/switch-docs-to-markbind","messageBody":"Merge Switch docs to markbind branch to master branch","fileTypesAndContributionMap":{}},{"hash":"f373b489ad88faf9a3b9294b31e953e8ae9cc08a","isMergeCommit":false,"messageTitle":"Update default.md with product name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1d5dbdcb738b7bff325d997071feb38d01b67e29","isMergeCommit":false,"messageTitle":"Update README.md with codecov status","messageBody":"Testing if there is codecov status appearing","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"554165507f854a82ae966b794937bff3ec689d9b","isMergeCommit":false,"messageTitle":"Remove codecov status in README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}},{"hash":"e21fbc818f8b910b33476692bfac04629706b073","isMergeCommit":false,"messageTitle":"Add codecov status in README.md","messageBody":"Trying another way apart from what was stated in the SE website.","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-30","commitResults":[{"hash":"3903791f0db9546264dc78db6a1fa10936bd3461","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":47}}},{"hash":"6c35f4889e14452e53c5cee0361d61244c41704e","isMergeCommit":false,"messageTitle":"Update AboutUs.md TH","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":3}}},{"hash":"c8d43335e0c8f3e5cf193991dcec85866d75c21b","isMergeCommit":false,"messageTitle":"Update AboutUs.md new line","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-05","commitResults":[{"hash":"6412a0739054505a305c9b179c9d08e07979b5f7","isMergeCommit":false,"messageTitle":"Update site-wide settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-09","commitResults":[{"hash":"fae593ec9a22f8a87bf59a198c17644777c2b2fe","isMergeCommit":false,"messageTitle":"Add nickname function (partial)","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":139,"deletions":22},"test-code":{"insertions":14,"deletions":9}}},{"hash":"75de3cf793b453d0b595bbabb149c570f11eb37f","isMergeCommit":false,"messageTitle":"Allow nickname optional","messageBody":"Add command currently makes the -nn tag compulsory, if not mistaken. For\nempty nicknames, the GUI shows them as an empty line below the email. To\nallow nicknames to be optional when writing the add command, and for the\nnickname component to only be shown if the nickname is not an empty\nString, let\u0027s\n\n* Change the nickname component in fxml file as a FlowPane rather than a\n Label\n* Change the code in AddCommandParser.java where\n arMultimap.getValue(PREFIX_NICKNAME).orElse(\"\") rather than .get() so\n that an empty Optional object returned will be seen as a empty String\n return to alow for parsing in parseNickname function\n\nThis are the main changes to allow nickname to be an optional\nrequirement in Add Command.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":28}}},{"hash":"37244bed59ee40ce98b95a21d8afec662b882a4e","isMergeCommit":false,"messageTitle":"Edit code for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3}}},{"hash":"c24c7922e3759346632fff959a689f7cc24f5bae","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"Errors occur due to nickname field being missing in the creation of\nPerosn object. Edit it to include nickname field (psudo-optional for\nnow).\n","fileTypesAndContributionMap":{"test-code":{"insertions":18,"deletions":3}}},{"hash":"844ec7054ce76528de1751cb474d029ceaf3d707","isMergeCommit":false,"messageTitle":"Update to try pass CI","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":5}}}]}],"wuzengfu":[{"date":"2024-09-30","commitResults":[{"hash":"6fc1084134562e6d951e6ed3251bd88780b384a7","isMergeCommit":false,"messageTitle":"Update Zengfu details for AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"6a56a7bea9afb12f4c47d8740f8116745caf56ee","isMergeCommit":false,"messageTitle":"Update Readme.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":11}}}]},{"date":"2024-10-07","commitResults":[{"hash":"7aa6624fc52f42cbf31c459f72031644924402bf","isMergeCommit":false,"messageTitle":"Add zengfu.md to team profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}}]},{"date":"2024-10-09","commitResults":[{"hash":"3f8e7cebaeaba0f0a175e31fe322ddb2a3a1465c","isMergeCommit":false,"messageTitle":"Modify validations on tags","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":11}}},{"hash":"f775c701d5bf83330e56e0768c5037a8d20355f3","isMergeCommit":false,"messageTitle":"Make tags a compulsory parameter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"fe5cfdef55a0de1341b72e4d06e2d01c57929ec3","isMergeCommit":false,"messageTitle":"Add and modify test cases for tag","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":113,"deletions":84}}},{"hash":"0ed36faa4b1a10eeedbb6d396c9554b64ff34779","isMergeCommit":false,"messageTitle":"Add test cases for SampleDataUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}},{"hash":"4c3bf5cd25952e8cf91f59dd68b195da4120a343","isMergeCommit":false,"messageTitle":"Add more test cases for SampleDataUtil.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":45,"deletions":3}}}]},{"date":"2024-10-10","commitResults":[{"hash":"7f5ce5eeeb42d6d4d557ddfc5a5829084201f7b8","isMergeCommit":false,"messageTitle":"Rename Tag.java to Role.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":67},"other":{"insertions":19,"deletions":19},"test-code":{"insertions":86,"deletions":86}}},{"hash":"0ee9268f71ee1cd10fa60c5ffa4fac16c4450123","isMergeCommit":false,"messageTitle":"Update UserGuide.md to align with Role parameter","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":16}}},{"hash":"dcca8bd35e957d45f27dfd902b9a341358e69a19","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-role-attribute-for-person","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"52ab4c5d9f6b27514234fb14faaf2e037e00ba80","isMergeCommit":true,"messageTitle":"Merge pull request #50 from wuzengfu/add-role-attribute-for-person","messageBody":"Add role attribute for person","fileTypesAndContributionMap":{}},{"hash":"8d1f3b14fe54cb8d7d3f4a8cfa1b96696b13a96d","isMergeCommit":false,"messageTitle":"Fix compiling errors and styling issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12},"test-code":{"insertions":9,"deletions":8}}},{"hash":"54de07a8c92c1723e44cf19a79e21285042ea974","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027origin/master\u0027 into fork/LowXiSi/branch-add-student-status","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/AddCommand.java\n#\tsrc/main/java/seedu/address/logic/commands/EditCommand.java\n#\tsrc/main/java/seedu/address/logic/parser/AddCommandParser.java\n#\tsrc/main/java/seedu/address/logic/parser/CliSyntax.java\n#\tsrc/main/java/seedu/address/logic/parser/EditCommandParser.java\n#\tsrc/main/java/seedu/address/logic/parser/ParserUtil.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/main/java/seedu/address/model/util/SampleDataUtil.java\n#\tsrc/main/java/seedu/address/storage/JsonAdaptedPerson.java\n#\tsrc/main/java/seedu/address/ui/PersonCard.java\n#\tsrc/main/resources/view/PersonListCard.fxml\n#\tsrc/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json\n#\tsrc/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/logic/LogicManagerTest.java\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.java\n#\tsrc/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java\n#\tsrc/test/java/seedu/address/logic/parser/AddCommandParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/EditCommandParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/ParserUtilTest.java\n#\tsrc/test/java/seedu/address/model/AddressBookTest.java\n#\tsrc/test/java/seedu/address/model/person/NameContainsKeywordsPredicateTest.java\n#\tsrc/test/java/seedu/address/model/person/PersonTest.java\n#\tsrc/test/java/seedu/address/model/person/UniquePersonListTest.java\n#\tsrc/test/java/seedu/address/storage/JsonAdaptedPersonTest.java\n#\tsrc/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/PersonUtil.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}}]}],"WinstonJin":[{"date":"2024-09-30","commitResults":[{"hash":"de3698625d5dbbc4403cb8b0dd5c6e0972d0cb77","isMergeCommit":false,"messageTitle":"Edit AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":43}}},{"hash":"0d5fa5e3c068f4aa79b5ebdf7fa0d9ee83ad8247","isMergeCommit":true,"messageTitle":"Merge pull request #23 from wuzengfu/update-aboutus-zengfu","messageBody":"Update Zengfu details for AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"8d361229d511dbbd2d1e0c4cd583cd27e9e8c570","isMergeCommit":true,"messageTitle":"Merge pull request #24 from somethingfishyfishy/branch-UpdateAboutErnest","messageBody":"Update AboutErnest","fileTypesAndContributionMap":{}},{"hash":"54c40b231062061a2f2bf584d6a51934a443bdbe","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into about-us-edit","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4472eb3daf68f236fc22dddc543ca8642e48000a","isMergeCommit":true,"messageTitle":"Merge pull request #25 from WinstonJin/about-us-edit","messageBody":"Update AboutUs Winston","fileTypesAndContributionMap":{}},{"hash":"53bd9f26a36418e1d35c7b32b05f1c7ceeda26e9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-docs-branch","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ea73c46d118c94196e0ec8d9b5ec8f530ca17361","isMergeCommit":true,"messageTitle":"Merge pull request #26 from cth06-Github/update-docs-branch","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"b447d16f5bc8b3c5f3d4a5cdfefbc4cfe6711805","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AboutXiSi","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0d7e1b35c5699f167ae752adea4083ac1055748c","isMergeCommit":true,"messageTitle":"Merge pull request #27 from LowXiSi/branch-AboutXiSi","messageBody":"Update AboutXiSi","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"b52e1d62e5737fa2e30c378f96f2c97c7426aa91","isMergeCommit":true,"messageTitle":"Merge pull request #35 from wuzengfu/update-readme","messageBody":"Update Readme.md","fileTypesAndContributionMap":{}},{"hash":"464e8f3f493cadc134e912fb45913582901eadef","isMergeCommit":false,"messageTitle":"Update Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":15}}}]},{"date":"2024-10-05","commitResults":[{"hash":"1903d1bf13c0c208f037e773afbfecf7785a1820","isMergeCommit":true,"messageTitle":"Merge pull request #38 from LowXiSi/branch-Non-functional-requirements","messageBody":"Update non-functional requirements","fileTypesAndContributionMap":{}},{"hash":"b0c961eabf0ecf3a6debb59293ada578b967c464","isMergeCommit":true,"messageTitle":"Merge pull request #41 from cth06-Github/site-update-branch","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"8e180183ad48bc5d8b740e4d103506016c6f60fe","isMergeCommit":false,"messageTitle":"Change Phone to Telegram Handle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":136,"deletions":133},"test-code":{"insertions":190,"deletions":187}}},{"hash":"0f364319f20a7d21658409a6e328660511416b84","isMergeCommit":false,"messageTitle":"Edit PersonListCard.fxml to show GUI","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"e44a4d908fb7ca33dacea50137af695450f822f0","isMergeCommit":true,"messageTitle":"Merge pull request #44 from wuzengfu/add-zengfu-profile","messageBody":"Add zengfu.md to team profile","fileTypesAndContributionMap":{}},{"hash":"f0b63f3c6bbb67223a536c44438fa5392062ac7b","isMergeCommit":true,"messageTitle":"Merge pull request #49 from cth06-Github/nickname-v1.2-branch","messageBody":"Merge Nickname v1.2 branch","fileTypesAndContributionMap":{}},{"hash":"07e3c693a1ba189e04e8b3fc59c78a651b9c3fb8","isMergeCommit":true,"messageTitle":"Merge pull request #55 from wuzengfu/fix-compile-error-and-styling-issues","messageBody":"Fix compiling errors and styling issues","fileTypesAndContributionMap":{}},{"hash":"96aef8941c0bd9b8132daf4bccaf253db1a3cb45","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Telegram-Handle","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"65f95055c3e051e1d38e90be08269bf95b2b8ee8","isMergeCommit":true,"messageTitle":"Merge pull request #52 from LowXiSi/branch-add-student-status","messageBody":"Add support for student status","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"7b6f9c85153ae77d02b59b22245e24e15025c1f8","isMergeCommit":true,"messageTitle":"Merge pull request #57 from LowXiSi/branch-resolve-merge-issues","messageBody":"Resolve issues from previous merge","fileTypesAndContributionMap":{}}]}],"somethingfishyfishy":[{"date":"2024-09-30","commitResults":[{"hash":"11ae12fccf718470ff311f0ce413dc193c7f8906","isMergeCommit":false,"messageTitle":"Update AboutErnest","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":0}}}]},{"date":"2024-10-05","commitResults":[{"hash":"c861bbb9ca2e7780b0069ee6dfa22976a3459f42","isMergeCommit":false,"messageTitle":"Correct github username","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"dc8197abf6c08c62fe4a7b03babbaad0fb85c005","isMergeCommit":true,"messageTitle":"Merge pull request #39 from LowXiSi/branch-Update-use-cases","messageBody":"Update use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"b3ff7c83e89bebf41c0d4aa96c6fece0c1b1307d","isMergeCommit":false,"messageTitle":"Added somethingfishyfishy.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}},{"hash":"67540a04d904d6f20a6bf3a86ded1bedd805b7b6","isMergeCommit":true,"messageTitle":"Merge pull request #1 from somethingfishyfishy/branch-UpdateAboutErnest","messageBody":"Added somethingfishyfishy.md","fileTypesAndContributionMap":{}},{"hash":"67bda16eafbb4a6ed50a91e883fc404a1824db0a","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":27,"deletions":15}}},{"hash":"ff75230c2e4fec35f60fca5903a0762fe4251dc3","isMergeCommit":true,"messageTitle":"Merge pull request #42 from somethingfishyfishy/branch-UpdateDGUseCases","messageBody":"Update DG - Product scope \u0026 use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"f4ca3070771757bf039bd9ed4ad5258608fc81e7","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"Fix Tse Hui\u0027s image description","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-13","commitResults":[{"hash":"5cbcf871e2e523aa379b456dad4d8525a3c59ae2","isMergeCommit":false,"messageTitle":"Rename Telegram to TelegramHandle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":70},"other":{"insertions":7,"deletions":11}}},{"hash":"69178475fff2044fc92c02dbad8bce44b086e474","isMergeCommit":false,"messageTitle":"Fix UI bugs after prev TelegramHandle update","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":15},"test-code":{"insertions":238,"deletions":214}}},{"hash":"12106da7aed9dfbe1dd1b9fd143564d49febb776","isMergeCommit":true,"messageTitle":"Merge pull request #68 from somethingfishyfishy/master","messageBody":"Rename Telegram to TelegramHandle","fileTypesAndContributionMap":{}},{"hash":"e7430ef045aaa6af8b5719925ada9dd46a561142","isMergeCommit":false,"messageTitle":"Fix Regex of StudentStatus and various Junit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":13},"test-code":{"insertions":5,"deletions":2}}},{"hash":"b2eea978c946c92f935881fe130286e52be99aea","isMergeCommit":true,"messageTitle":"Merge pull request #69 from somethingfishyfishy/branch-Fix-JunitTests","messageBody":"Fix Regex of StudentStatus and various Junit tests","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"LowXiSi":{"docs":94,"functional-code":235,"test-code":304,"other":3},"cth06-Github":{"docs":9,"functional-code":109,"test-code":15},"wuzengfu":{"docs":77,"functional-code":67,"test-code":117},"WinstonJin":{"docs":68,"functional-code":50,"test-code":1},"somethingfishyfishy":{"docs":78,"functional-code":86,"test-code":243}},"authorContributionVariance":{"LowXiSi":39547.69,"cth06-Github":3304.9375,"wuzengfu":10463.556,"WinstonJin":16872.064,"somethingfishyfishy":18418.318},"authorDisplayNameMap":{"LowXiSi":"CS2103-F09-1 LOW ..I SI","cth06-Github":"CS2103-F09-1 CHUA.. HUI","wuzengfu":"CS2103-F09-1 WU Z..NGFU","WinstonJin":"CS2103-F09-1 JIN ..STON","somethingfishyfishy":"CS2103-F09-1 ERNE..RONG"}} diff --git a/AY2425S1-CS2103-F12-2_tp_master/authorship.json b/AY2425S1-CS2103-F12-2_tp_master/authorship.json index e9e27bcd..0d1a059d 100644 --- a/AY2425S1-CS2103-F12-2_tp_master/authorship.json +++ b/AY2425S1-CS2103-F12-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"# T_Assistant","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"YANYAN-w"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103-F12-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103-F12-2/tp/actions)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":"[![codecov](https://codecov.io/gh/nus-cs2103-AY2425S1/tp/graph/badge.svg?token\u003dJA7RQH158C)](https://codecov.io/gh/nus-cs2103-AY2425S1/tp)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ghos7ie"},"content":"T_Assistant is an **address book made for CS2103 tutors** to easily track their students\u0027 groupings and taskings, optimised for users who prefer a CLI program.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"## Features","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"1. **Store** student information.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"2. **Store** group information and the tasks they have.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"3. **Track** progress of each group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"If you are interested in **using** T_Assistant, head over to the [User Guide](https://ay2425s1-cs2103-f12-2.github.io/tp/)!","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":"If you are interested in **developing** T_Assistant, head over to the [Developer Guide](https://ay2425s1-cs2103-f12-2.github.io/tp/DeveloperGuide.html)!","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-18","isFullCredit":false}],"authorContributionMap":{"ghos7ie":14,"YANYAN-w":1,"-":6}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"### Lewis Lye","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"YANYAN-w"},"content":"\u003cimg src\u003d\"images/ghos7ie.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"[[github](http://github.com/ghos7ie)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":"* Role: Developer","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"YANYAN-w"},"content":"### Wang Hongyanyan","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"YANYAN-w"},"content":"\u003cimg src\u003d\"images/yanyan-w.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"YANYAN-w"},"content":"[[github](http://github.com/YANYAN-w)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"YANYAN-w"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"YANYAN-w"},"content":"* Responsibilities: Ensure project deliverables are done on time and in the right format.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":"### Tan Soo Yap","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":"\u003cimg src\u003d\"images/sooyap.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"[[github](https://github.com/SooYap)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":"* Role: Developer and Testing","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":"* Responsibilities: Dev Ops + Code Testing","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":"### Desiree Sng","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":"\u003cimg src\u003d\"images/dez2003.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"dez2003"},"content":"[[github](http://github.com/dez2003)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"dez2003"},"content":"* Responsibilities: Code Quality","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"SooYap":5,"YANYAN-w":6,"-":33,"dez2003":4}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"# T_Assistant Developer Guide","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"original source as well }_","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":"**`Main`** (consisting of classes [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"ghos7ie"},"content":"`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":"`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ghos7ie"},"content":"charge of the app launch and shut down.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":"the command `delete 1`.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"ghos7ie"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ghos7ie"},"content":" `interface` mentioned in the previous point.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"ghos7ie"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"ghos7ie"},"content":"the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ghos7ie"},"content":"through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":"implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":"The **API** of this component is specified in [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":"`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"ghos7ie"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"ghos7ie"},"content":"`StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":"the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"ghos7ie"},"content":"are in the `src/main/resources/view` folder. For example, the layout of the [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"ghos7ie"},"content":"`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":"is specified in [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":"`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"ghos7ie"},"content":"**API** : [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"ghos7ie"},"content":"`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"ghos7ie"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"ghos7ie"},"content":"call as an example.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"ghos7ie"},"content":"PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"ghos7ie"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"ghos7ie"},"content":" a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"ghos7ie"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"ghos7ie"},"content":" is executed by the `LogicManager`.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"ghos7ie"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a student).\u003cbr\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"ghos7ie"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"ghos7ie"},"content":" several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"ghos7ie"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"ghos7ie"},"content":" placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"ghos7ie"},"content":" the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"ghos7ie"},"content":" `Command` object.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"ghos7ie"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"ghos7ie"},"content":" interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"ghos7ie"},"content":"**API** : [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"ghos7ie"},"content":"`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"ghos7ie"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"ghos7ie"},"content":" is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"ghos7ie"},"content":" this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"ghos7ie"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"ghos7ie"},"content":" `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"ghos7ie"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"ghos7ie"},"content":" should make sense on their own without depending on other components)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"ghos7ie"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"ghos7ie"},"content":"`Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"ghos7ie"},"content":"needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"ghos7ie"},"content":"**API** : [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"ghos7ie"},"content":"`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"ghos7ie"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"ghos7ie"},"content":" objects.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"ghos7ie"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"ghos7ie"},"content":" the functionality of only one is needed).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"ghos7ie"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"ghos7ie"},"content":" that belong to the `Model`)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"ghos7ie"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"ghos7ie"},"content":"history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"ghos7ie"},"content":"following operations:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"ghos7ie"},"content":"* `VersionedAddressBook#commit()`— Saves the current address book state in its history.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"ghos7ie"},"content":"* `VersionedAddressBook#undo()`— Restores the previous address book state from its history.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"ghos7ie"},"content":"* `VersionedAddressBook#redo()`— Restores a previously undone address book state from its history.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"ghos7ie"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"ghos7ie"},"content":"`Model#redoAddressBook()` respectively.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"ghos7ie"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"ghos7ie"},"content":"initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"ghos7ie"},"content":"Step 2. The user executes `delete 5` command to delete the 5th student in the address book. The `delete` command calls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"ghos7ie"},"content":"`Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"ghos7ie"},"content":"saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"ghos7ie"},"content":"Step 3. The user executes `add n/David …​` to add a new student. The `add` command also calls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"ghos7ie"},"content":"`Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"ghos7ie"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"ghos7ie"},"content":"not be saved into the `addressBookStateList`.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"ghos7ie"},"content":"Step 4. The user now decides that adding the student was a mistake, and decides to undo that action by executing the","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"ghos7ie"},"content":"`undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"ghos7ie"},"content":"to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"ghos7ie"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"ghos7ie"},"content":"previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"ghos7ie"},"content":"case. If so, it will return an error to the user rather","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"ghos7ie"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"ghos7ie"},"content":"lifeline reaches the end of diagram.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"ghos7ie"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"ghos7ie"},"content":"to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"ghos7ie"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"ghos7ie"},"content":"book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"ghos7ie"},"content":"to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"ghos7ie"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"ghos7ie"},"content":"`list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"ghos7ie"},"content":"the `addressBookStateList` remains unchanged.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"ghos7ie"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"ghos7ie"},"content":"pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"ghos7ie"},"content":"purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"ghos7ie"},"content":"desktop applications follow.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"ghos7ie"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the student being deleted).","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"ghos7ie"},"content":"* CS2103 tutor","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"ghos7ie"},"content":"* has a need to manage a significant number of students","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"ghos7ie"},"content":"**Value proposition**: ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"ghos7ie"},"content":"* Manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"ghos7ie"},"content":"* Helps to track the following:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"ghos7ie"},"content":" * Students","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"ghos7ie"},"content":" * Their groups","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"ghos7ie"},"content":" * Group projects’ progress","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"ghos7ie"},"content":" * TA will create Groups and assign tasks","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"ghos7ie"},"content":" * Mark the tasks as the groups complete them","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"ghos7ie"},"content":"| Priority | As a …. | I want to… | So that I can… |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"ghos7ie"},"content":"|----------|------------------------|-----------------------------------------------|---------------------------------------------------|","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | beginner TA | add students into the system | |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | busy TA | remove projects/tasks | not feel overwhelmed |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | TA that prefers typing | carry out all the functions through CLI | just use my keyboard |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"SooYap"},"content":"| `* * *` | disorganized TA | mark a team’s tasks as complete | keep track of my students’ progress |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | disorganized TA | sort students by their groupings | keep track of all the groups under my instruction |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | disorganized TA | remove students no longer taking this module | keep the contact list relevant |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | disorganized TA | search for a student by name or project group | quickly find their contact details |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | disorganized TA | see what I added (groups/projects) before | quickly reference what I added. |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | highly motivated TA | add students into their projects | |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"ghos7ie"},"content":"| `*` | TA that makes mistakes | edit student particulars | correct my mistakes |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"ghos7ie"},"content":"| `*` | clumsy TA | edit tasks/projects | fix my mistakes |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"ghos7ie"},"content":"(For all use cases below, the **System** is the `T_Assistant` and the **Actor** is the `user`, unless specified","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"ghos7ie"},"content":"otherwise)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"ghos7ie"},"content":"**Use case: List Students**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"-"},"content":"Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"ghos7ie"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"ghos7ie"},"content":"**Use case: Add a Student**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"ghos7ie"},"content":"3. User requests to add a new Student into the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant adds the new Student to the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"-"},"content":"Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Student parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"ghos7ie"},"content":"* 3b. The Student already exits.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"ghos7ie"},"content":" * 3b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"ghos7ie"},"content":"**Use case: Delete a Student**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"ghos7ie"},"content":"3. User requests to delete a Student from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant deletes the Student from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"ghos7ie"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"ghos7ie"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"ghos7ie"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Student parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"ghos7ie"},"content":"**Use case: Add a Group**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list groups.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of groups.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"ghos7ie"},"content":"3. User requests to add a new Group into the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant adds the new Group to the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"ghos7ie"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Group parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"ghos7ie"},"content":"* 3b. The Group already exits.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"ghos7ie"},"content":" * 3b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"ghos7ie"},"content":"* 3c. The Group has hit max limit.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"ghos7ie"},"content":" * 3c1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"ghos7ie"},"content":"* 3d. Student is in another Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"ghos7ie"},"content":" * 3d1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"ghos7ie"},"content":"**Use case: Delete a Group**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list Groups.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of Groups.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"ghos7ie"},"content":"3. User requests to delete a Group from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant deletes the Group from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"ghos7ie"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"ghos7ie"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"ghos7ie"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Group parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"ghos7ie"},"content":"**Use case: Add a Student to a Group**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list Students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of Students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"ghos7ie"},"content":"3. User requests to add a Student to a Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant adds the Student to the Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"ghos7ie"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"ghos7ie"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"ghos7ie"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Student/Group parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"ghos7ie"},"content":"* 3b. The Student is already in a different Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"SooYap"},"content":" * 3b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"ghos7ie"},"content":"* 3b. The Student is already in a different Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"ghos7ie"},"content":"* 3c. The Group has hit max limit.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"ghos7ie"},"content":" * 3c1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":543,"author":{"gitId":"SooYap"},"content":"**Use case: Mark Team\u0027s task as Complete**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":544,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"SooYap"},"content":"1. User marks task as complete.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"SooYap"},"content":"2. T_Assistant marks the task accordingly.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"SooYap"},"content":"* 1a. The Group/Task parameters are invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"SooYap"},"content":"* 1b. The user marks an already complete task.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"SooYap"},"content":" * 1b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"SooYap"},"content":"**Use case: Delete Student from Group**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"SooYap"},"content":"1. User requests to list all students.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"SooYap"},"content":"2. T_Assistant shows all students.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"SooYap"},"content":"3. User deletes a student from a specified group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"SooYap"},"content":"4. T_Assistant adds student to the group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"SooYap"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"SooYap"},"content":"* 3a. The Student/Group parameters are invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":584,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"SooYap"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"SooYap"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":588,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"SooYap"},"content":"* 3b. The Student is already in a different Group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"SooYap"},"content":" * 3b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"SooYap"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"SooYap"},"content":"**Use case: List all Groups**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":596,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"SooYap"},"content":"1. User lists all groups.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"SooYap"},"content":"2. T_Assistant displays all groups.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":602,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"SooYap"},"content":"* 1a. There are currently no groups.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":607,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":610,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"SooYap"},"content":"**Use case: List all Tasks**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"SooYap"},"content":"1. User lists all tasks.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"SooYap"},"content":"2. T_Assistant displays all groups.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":619,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":620,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":621,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":622,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":623,"author":{"gitId":"SooYap"},"content":"* 1a. There are currently no tasks.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":624,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":625,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":626,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":627,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":628,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":629,"author":{"gitId":"SooYap"},"content":"**Use case: Add Task to Group**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":630,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":631,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":632,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":633,"author":{"gitId":"SooYap"},"content":"1. User adds a task to a specified group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":634,"author":{"gitId":"SooYap"},"content":"2. T_Assistant displays all current tasks for the group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":635,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":636,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":637,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":638,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":639,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":640,"author":{"gitId":"SooYap"},"content":"* 1a. The Group/Task parameters are invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":641,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":642,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":643,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":644,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":645,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":646,"author":{"gitId":"SooYap"},"content":"* 1b. A duplicate task is entered.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":647,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":648,"author":{"gitId":"SooYap"},"content":" * 1b1. T_Assistant informs user that the task already exists.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":649,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":650,"author":{"gitId":"SooYap"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":651,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":652,"author":{"gitId":"SooYap"},"content":"**Use case: Delete Task from Group**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":653,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":654,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":655,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":656,"author":{"gitId":"SooYap"},"content":"1. User removes a task from a specified group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":657,"author":{"gitId":"SooYap"},"content":"2. T_Assistant displays all current tasks for the group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":658,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":659,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":660,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":661,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":662,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":663,"author":{"gitId":"SooYap"},"content":"* 1a. The Group/Task parameters are invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":664,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":665,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":666,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":667,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":668,"author":{"gitId":"SooYap"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":669,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":670,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":671,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":672,"author":{"gitId":"ghos7ie"},"content":"2. Should be able to hold up to 1000 students without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":673,"author":{"gitId":"ghos7ie"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":674,"author":{"gitId":"ghos7ie"},"content":" able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":675,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":676,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":677,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":678,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":679,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":680,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":681,"author":{"gitId":"SooYap"},"content":"* **Student Number**: Unique identifier for each student","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":682,"author":{"gitId":"SooYap"},"content":"* **Group Name**: Unique identifier for each group","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":683,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":684,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":685,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":686,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":687,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":688,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":689,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":690,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":691,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":692,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":693,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":694,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":695,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":696,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":697,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":698,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":699,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":700,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":701,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":702,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":703,"author":{"gitId":"ghos7ie"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":704,"author":{"gitId":"ghos7ie"},"content":" optimum.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":705,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":706,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":707,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":708,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":709,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":710,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":711,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":712,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":713,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":714,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":715,"author":{"gitId":"ghos7ie"},"content":"### Deleting a student","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":716,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":717,"author":{"gitId":"ghos7ie"},"content":"1. Deleting a student while all students are being shown","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":718,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":719,"author":{"gitId":"ghos7ie"},"content":" 1. Prerequisites: List all students using the `list` command. Multiple students in the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":720,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":721,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":722,"author":{"gitId":"ghos7ie"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":723,"author":{"gitId":"ghos7ie"},"content":" Timestamp in the status bar is updated.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":724,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":725,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":726,"author":{"gitId":"ghos7ie"},"content":" Expected: No student is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":727,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":728,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":729,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":730,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":731,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":732,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":733,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":734,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":735,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":736,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":737,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":738,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":739,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"ghos7ie":285,"SooYap":129,"-":324,"dez2003":1}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"# T_Assistant User Guide","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"dez2003"},"content":"T_Assistant is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, T_Assistant can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":"### Adding a student: `add`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":"Adds a student to the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"ghos7ie"},"content":"**Tip:** A student can have any number of tags (including 0)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":"### Listing all students : `list`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":"Shows a list of all students in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"ghos7ie"},"content":"### Editing a student : `edit`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"ghos7ie"},"content":"Edits an existing student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"ghos7ie"},"content":"* Edits the student at the specified `INDEX`. The index refers to the index number shown in the displayed student list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":"* When editing tags, the existing tags of the student will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"ghos7ie"},"content":"* You can remove all the student’s tags by typing `t/` without","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"ghos7ie"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st student to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"ghos7ie"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd student to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"ghos7ie"},"content":"### Locating students by name: `find`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":"Finds students whose names contain any of the given keywords.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"ghos7ie"},"content":"### Deleting a student : `delete`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"ghos7ie"},"content":"Deletes the specified student from the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"ghos7ie"},"content":"* Deletes the student at the specified `INDEX`.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"ghos7ie"},"content":"* The index refers to the index number shown in the displayed student list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"ghos7ie"},"content":"* `list` followed by `delete 2` deletes the 2nd student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"ghos7ie"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st student in the results of the `find` command.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"ghos7ie":20,"-":183,"dez2003":2}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"# T_Assistant","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103-F12-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103-F12-2/tp/actions)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"[![codecov](https://codecov.io/gh/nus-cs2103-AY2425S1/tp/graph/badge.svg?token\u003dJA7RQH158C)](https://codecov.io/gh/nus-cs2103-AY2425S1/tp)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"dez2003"},"content":"**T_Assistant is a desktop application for managing your contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"dez2003"},"content":"* If you are interested in using T_Assistant, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"dez2003"},"content":"* If you are interested about developing T_Assistant, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":15,"dez2003":4}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.State;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" ObservableList\u003cStudent\u003e getFilteredPersonList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" /** Returns an unmodifiable view of the filtered list of groups */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" ObservableList\u003cGroup\u003e getFilteredGroupList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" void setStateStudents();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" void setStateGroups();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" State getState();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"SooYap":10,"-":49}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.State;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":" public ObservableList\u003cStudent\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" return model.getFilteredGroupList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":" public void setStateStudents() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":" this.model.setStateStudents();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" public void setStateGroups() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":" this.model.setStateGroups();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":" public State getState() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":" return this.model.getState();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"SooYap":22,"-":86}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The student index provided is invalid\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"YANYAN-w"},"content":" public static final String MESSAGE_STUDENT_NO_NOT_FOUND \u003d \"The student number provided is not found\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ghos7ie"},"content":" * Formats the {@code student} for display to the user.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" public static String format(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" builder.append(student.getName())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"YANYAN-w"},"content":" .append(\"; Student Number:\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"YANYAN-w"},"content":" .append(student.getStudentNumber())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" .append(student.getEmail())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" student.getTags().forEach(builder::append);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" * Formats the {@code group} for display to the user.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" public static String format(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" builder.append(group.getGroupName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":7,"SooYap":7,"YANYAN-w":3,"-":43}},{"path":"src/main/java/seedu/address/logic/commands/AddGroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP_NAME;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" * Adds a group to the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"public class AddGroupCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" public static final String COMMAND_WORD \u003d \"add_group\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a group to the address book. \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" + PREFIX_GROUP_NAME + \"GROUPNAME \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" + PREFIX_GROUP_NAME + \"Group 1 \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New group added: %1$s\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_DUPLICATE_GROUP \u003d \"This group already exists in the address book\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" private final Group toAdd;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" * Creates an AddGroupCommand to add the specified {@code Group}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" public AddGroupCommand(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" toAdd \u003d group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" if (model.hasGroup(toAdd)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" throw new CommandException(MESSAGE_DUPLICATE_GROUP);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" model.addGroup(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof AddGroupCommand)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" AddGroupCommand otherAddGroupCommand \u003d (AddGroupCommand) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" return toAdd.equals(otherAddGroupCommand.toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":71}},{"path":"src/main/java/seedu/address/logic/commands/AddStudentCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" * Adds a student to the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"dez2003"},"content":" public static final String COMMAND_WORD \u003d \"add_student\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a student to the address book. \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"dez2003"},"content":" + PREFIX_STUDENT_NAME + \"NAME \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"dez2003"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"dez2003"},"content":" + PREFIX_STUDENT_NUMBER + \"STUDENT_NUMBER\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"dez2003"},"content":" + PREFIX_STUDENT_NAME + \"John Doe \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"dez2003"},"content":" + PREFIX_STUDENT_NUMBER + \"A02345678J\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New student added: %1$s\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This student already exists in the address book\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" private final Student toAdd;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"dez2003"},"content":" * Creates an AddStudentCommand to add the specified {@code Student}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":" public AddStudentCommand(Student student) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" toAdd \u003d student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"dez2003"},"content":" if (!(other instanceof AddStudentCommand)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"dez2003"},"content":" AddStudentCommand otherAddCommand \u003d (AddStudentCommand) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":8,"-":59,"dez2003":14}},{"path":"src/main/java/seedu/address/logic/commands/DeleteStudentCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"YANYAN-w"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"YANYAN-w"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" * Deletes a student from the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"YANYAN-w"},"content":"public class DeleteStudentCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"YANYAN-w"},"content":" public static final String COMMAND_WORD \u003d \"delete_student\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"YANYAN-w"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"YANYAN-w"},"content":" + \": Deletes the student identified by the student number used.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" + \"Parameters: STUDENT_NUMBER (must be a string starting with \u0027A\u0027, followed by 7 numeric figures, \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" + \"and ended with a capital letter\u0027)\\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"YANYAN-w"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + PREFIX_STUDENT_NUMBER + \" \" + \"A0123456B\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"YANYAN-w"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Student: %1$s\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"YANYAN-w"},"content":" private final StudentNumber targetStudentNo;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"YANYAN-w"},"content":" public DeleteStudentCommand(StudentNumber sno) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"YANYAN-w"},"content":" this.targetStudentNo \u003d sno;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"YANYAN-w"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"YANYAN-w"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"YANYAN-w"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"YANYAN-w"},"content":" List\u003cStudent\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"YANYAN-w"},"content":" boolean hasFoundTarget \u003d false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"YANYAN-w"},"content":" Student studentToBeDeleted \u003d null;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"YANYAN-w"},"content":" for (Student stu : lastShownList) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"YANYAN-w"},"content":" if (stu.getStudentNumber().equals(targetStudentNo)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":" hasFoundTarget \u003d true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"YANYAN-w"},"content":" studentToBeDeleted \u003d stu;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"YANYAN-w"},"content":" break;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"YANYAN-w"},"content":" if (!hasFoundTarget) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"YANYAN-w"},"content":" throw new CommandException(Messages.MESSAGE_STUDENT_NO_NOT_FOUND);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" model.deletePerson(studentToBeDeleted);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(studentToBeDeleted)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"YANYAN-w"},"content":" public StudentNumber getTargetStudentNo() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"YANYAN-w"},"content":" return targetStudentNo;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"YANYAN-w"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"YANYAN-w"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"YANYAN-w"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"YANYAN-w"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"YANYAN-w"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof DeleteStudentCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"YANYAN-w"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand otherDeleteStudentCommand \u003d (DeleteStudentCommand) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"YANYAN-w"},"content":" return targetStudentNo.equals(otherDeleteStudentCommand.targetStudentNo);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"YANYAN-w"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"YANYAN-w"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"YANYAN-w"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"YANYAN-w"},"content":" .add(\"targetStudentNumber\", targetStudentNo)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"YANYAN-w"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"YANYAN-w"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":10,"YANYAN-w":73}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" * Edits the details of an existing student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the student identified \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" + \"by the index number used in the displayed student list. \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"YANYAN-w"},"content":" + \"[\" + PREFIX_STUDENT_NAME + \"NAME] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Student: %1$s\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This student already exists in the address book.\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" * @param index of the student in the filtered student list to edit","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" * @param editPersonDescriptor details to edit the student with","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ghos7ie"},"content":" Student studentToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" Student editedStudent \u003d createEditedPerson(studentToEdit, editPersonDescriptor);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"dez2003"},"content":" System.out.println(\"studentToEdit: \" + studentToEdit);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"dez2003"},"content":" System.out.println(\"editedStudent: \" + editedStudent);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":" if (!studentToEdit.isSamePerson(editedStudent) \u0026\u0026 model.hasPerson(editedStudent)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":" model.setPerson(studentToEdit, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"ghos7ie"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent)));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"ghos7ie"},"content":" * Creates and returns a {@code Student} with the details of {@code studentToEdit}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"ghos7ie"},"content":" private static Student createEditedPerson(Student studentToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" assert studentToEdit !\u003d null;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"ghos7ie"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(studentToEdit.getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(studentToEdit.getEmail());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"ghos7ie"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(studentToEdit.getTags());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber updatedStudentNumber \u003d editPersonDescriptor.getStudentNumber()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"YANYAN-w"},"content":" .orElse(studentToEdit.getStudentNumber());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"dez2003"},"content":" System.out.println(updatedName);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"dez2003"},"content":" System.out.println(updatedEmail);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"dez2003"},"content":" System.out.println(updatedStudentNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"YANYAN-w"},"content":" return new Student(updatedName, updatedEmail, updatedTags, updatedStudentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"ghos7ie"},"content":" * Stores the details to edit the student with. Each non-empty field value will replace the","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"ghos7ie"},"content":" * corresponding field value of the student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"YANYAN-w"},"content":" private StudentNumber studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"ghos7ie"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"dez2003"},"content":" setStudentNumber(toCopy.studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"ghos7ie"},"content":" return CollectionUtil.isAnyNonNull(name, email, tags);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"YANYAN-w"},"content":" public void setStudentNumber(StudentNumber studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"YANYAN-w"},"content":" this.studentNumber \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"dez2003"},"content":" public Optional\u003cStudentNumber\u003e getStudentNumber() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"dez2003"},"content":" return Optional.ofNullable(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"dez2003"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"dez2003"},"content":" \u0026\u0026 Objects.equals(studentNumber, otherEditPersonDescriptor.studentNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"dez2003"},"content":" .add(\"student number\", studentNumber)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"ghos7ie":27,"YANYAN-w":8,"-":182,"dez2003":12}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":57}},{"path":"src/main/java/seedu/address/logic/parser/AddGroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.AddGroupCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"public class AddGroupCommandParser implements Parser\u003cAddGroupCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" public AddGroupCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_GROUP_NAME);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_GROUP_NAME)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_GROUP_NAME);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" GroupName groupName \u003d ParserUtil.parseGroupName(argMultimap.getValue(PREFIX_GROUP_NAME).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" Group group \u003d new Group(groupName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" return new AddGroupCommand(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":48}},{"path":"src/main/java/seedu/address/logic/parser/AddStudentCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"dez2003"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"dez2003"},"content":" * Parses input arguments and creates a new AddStudentCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommandParser implements Parser\u003cAddStudentCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"dez2003"},"content":" * Parses the given {@code String} of arguments in the context of the AddStudentCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"dez2003"},"content":" * and returns an AddStudentCommand object for execution.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"dez2003"},"content":" public AddStudentCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"dez2003"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_TAG, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"dez2003"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_STUDENT_NUMBER)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"dez2003"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"dez2003"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_STUDENT_NAME).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" StudentNumber studentNumber \u003d ParserUtil.parseStudentNumber(argMultimap.getValue(PREFIX_STUDENT_NUMBER).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":" Student student \u003d new Student(name, email, tagList, studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"dez2003"},"content":" return new AddStudentCommand(student);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"-":38,"dez2003":17}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.AddGroupCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.DeleteStudentCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"dez2003"},"content":" case AddStudentCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"dez2003"},"content":" return new AddStudentCommandParser().parse(arguments);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" case DeleteStudentCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" return new DeleteStudentCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":" case AddGroupCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":" return new AddGroupCommandParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"SooYap":7,"-":80,"dez2003":3}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"dez2003"},"content":" public static final Prefix PREFIX_STUDENT_NAME \u003d new Prefix(\"sn/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" public static final Prefix PREFIX_GROUP_NAME \u003d new Prefix(\"gn/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"YANYAN-w"},"content":" public static final Prefix PREFIX_STUDENT_NUMBER \u003d new Prefix(\"sno/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"SooYap":1,"YANYAN-w":1,"-":14,"dez2003":1}},{"path":"src/main/java/seedu/address/logic/parser/DeleteStudentCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"YANYAN-w"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.commands.DeleteStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"YANYAN-w"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"YANYAN-w"},"content":" * Parses input arguments and creates a new DeleteStudentCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"YANYAN-w"},"content":"public class DeleteStudentCommandParser implements Parser\u003cDeleteStudentCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"YANYAN-w"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"YANYAN-w"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteStudentCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"YANYAN-w"},"content":" * and returns a DeleteStudentCommand object for execution.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"YANYAN-w"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"YANYAN-w"},"content":" public DeleteStudentCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_STUDENT_NUMBER)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" StudentNumber studentNumber \u003d ParserUtil.parseStudentNumber(argMultimap.getValue(PREFIX_STUDENT_NUMBER).get());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"YANYAN-w"},"content":" return new DeleteStudentCommand(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":20,"YANYAN-w":24}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"dez2003"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_TAG, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"YANYAN-w"},"content":" if (argMultimap.getValue(PREFIX_STUDENT_NAME).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"dez2003"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_STUDENT_NAME).get()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"YANYAN-w"},"content":" if (argMultimap.getValue(PREFIX_STUDENT_NUMBER).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" editPersonDescriptor.setStudentNumber(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" ParserUtil.parseStudentNumber(argMultimap.getValue(PREFIX_STUDENT_NUMBER).get()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"dez2003"},"content":" if (argMultimap.getValue(PREFIX_STUDENT_NUMBER).isPresent()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"dez2003"},"content":" editPersonDescriptor.setStudentNumber(ParserUtil.parseStudentNumber(argMultimap","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"dez2003"},"content":" .getValue(PREFIX_STUDENT_NUMBER).get()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"SooYap":2,"YANYAN-w":2,"-":73,"dez2003":9}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":32}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"YANYAN-w"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"YANYAN-w"},"content":" * Parses a {@code String student number} into a {@code StudentNumber}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"YANYAN-w"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"YANYAN-w"},"content":" * @throws ParseException if the given {@code studentNumber} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" public static StudentNumber parseStudentNumber(String studentNumber) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" requireNonNull(studentNumber);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" String trimmedNumber \u003d studentNumber.trim();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"YANYAN-w"},"content":" if (!StudentNumber.isValidStudentNumber(trimmedNumber)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"YANYAN-w"},"content":" throw new ParseException(StudentNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" return new StudentNumber(studentNumber);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"SooYap"},"content":" * Parses a {@code String name} into a {@code GroupName}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SooYap"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" public static GroupName parseGroupName(String groupName) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" requireNonNull(groupName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" String trimmedName \u003d groupName.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":" if (!GroupName.isValidName(trimmedName)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":" throw new ParseException(GroupName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" return new GroupName(trimmedName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"SooYap":21,"YANYAN-w":11,"-":90}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.UniqueGroupList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.UniqueStudentList;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" private final UniqueStudentList students;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private final UniqueGroupList groups;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":" students \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" groups \u003d new UniqueGroupList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public AddressBook() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ghos7ie"},"content":" * Replaces the contents of the student list with {@code students}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" * {@code students} must not contain duplicate students.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" public void setStudents(List\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" this.students.setPersons(students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" * Replaces the contents of the student list with {@code groups}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" * {@code groups} must not contain duplicate students.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" public void setGroups(List\u003cGroup\u003e groups) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" this.groups.setGroups(groups);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" setStudents(newData.getStudentList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" setGroups(newData.getGroupList());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" //// student-level operations","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ghos7ie"},"content":" * Returns true if a student with the same identity as {@code student} exists in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"ghos7ie"},"content":" public boolean hasStudent(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" return students.contains(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"ghos7ie"},"content":" * Adds a student to the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"ghos7ie"},"content":" * The student must not already exist in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"ghos7ie"},"content":" public void addStudent(Student p) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":" students.add(p);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":" * Replaces the given student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the address","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"ghos7ie"},"content":" * book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"ghos7ie"},"content":" public void setStudent(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"ghos7ie"},"content":" students.setPerson(target, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" public void removeStudent(Student key) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"ghos7ie"},"content":" students.remove(key);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":" * Returns true if a group with the same identity as {@code group} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" return groups.contains(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" * Adds a group to the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" * The group must not already exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group p) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SooYap"},"content":" groups.add(p);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SooYap"},"content":" * Replaces the given student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SooYap"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"SooYap"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the address","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"SooYap"},"content":" * book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"SooYap"},"content":" requireNonNull(editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"SooYap"},"content":" groups.setGroup(target, editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"ghos7ie"},"content":" .add(\"students\", students)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cStudent\u003e getStudentList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"ghos7ie"},"content":" return students.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getGroupList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"SooYap"},"content":" return groups.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"ghos7ie"},"content":" return students.equals(otherAddressBook.students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"ghos7ie"},"content":" return students.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":31,"SooYap":40,"-":107}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" * {@code Predicate} that always evaluate to true","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" Predicate\u003cStudent\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" Predicate\u003cGroup\u003e PREDICATE_SHOW_ALL_GROUPS \u003d unused -\u003e true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" * Returns the AddressBook","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" * Returns true if a student with the same identity as {@code student} exists in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"ghos7ie"},"content":" boolean hasPerson(Student student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ghos7ie"},"content":" * Deletes the given student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"ghos7ie"},"content":" * The student must exist in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"ghos7ie"},"content":" void deletePerson(Student target);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ghos7ie"},"content":" * Adds the given student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" * {@code student} must not already exist in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ghos7ie"},"content":" void addPerson(Student student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"ghos7ie"},"content":" * Replaces the given student {@code target} with {@code editedStudent}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" * The student identity of {@code editedStudent} must not","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":" * be the same as another existing student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"ghos7ie"},"content":" void setPerson(Student target, Student editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":" * Returns true if a group with the same identity as {@code group} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" boolean hasGroup(Group group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":" * Adds the given group.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":" * {@code group} must not already exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" void addGroup(Group group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":" * Replaces the given group {@code target} with {@code editedGroup}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" * The group identity of {@code editedStudent} must not","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" * be the same as another existing group in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":" void setGroup(Group target, Group editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"ghos7ie"},"content":" * Returns an unmodifiable view of the filtered student list","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" ObservableList\u003cStudent\u003e getFilteredPersonList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SooYap"},"content":" * Returns an unmodifiable view of the filtered student list","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":" ObservableList\u003cGroup\u003e getFilteredGroupList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"ghos7ie"},"content":" * Updates the filter of the filtered student list to filter by the given {@code predicate}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"ghos7ie"},"content":" void updateFilteredPersonList(Predicate\u003cStudent\u003e predicate);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" void updateFilteredGroupList(Predicate\u003cGroup\u003e predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" void setStateStudents();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SooYap"},"content":" void setStateGroups();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":" State getState();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"ghos7ie":27,"SooYap":30,"-":72}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":" private final FilteredList\u003cStudent\u003e filteredStudents;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" private final FilteredList\u003cGroup\u003e filteredGroups;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" filteredStudents \u003d new FilteredList\u003c\u003e(this.addressBook.getStudentList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" filteredGroups \u003d new FilteredList\u003c\u003e(this.addressBook.getGroupList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" public void setStateStudents() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" this.userPrefs.setStateStudents();;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" public void setStateGroups() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" this.userPrefs.setStateGroups();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" public State getState() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" return this.userPrefs.getState();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"ghos7ie"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"ghos7ie"},"content":" return addressBook.hasStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"ghos7ie"},"content":" public void deletePerson(Student target) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"ghos7ie"},"content":" addressBook.removeStudent(target);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"ghos7ie"},"content":" public void addPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"ghos7ie"},"content":" public void setPerson(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"ghos7ie"},"content":" requireAllNonNull(target, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"ghos7ie"},"content":" addressBook.setStudent(target, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"SooYap"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"SooYap"},"content":" return addressBook.hasGroup(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"SooYap"},"content":" addressBook.addGroup(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"SooYap"},"content":" updateFilteredGroupList(PREDICATE_SHOW_ALL_GROUPS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(target, editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"SooYap"},"content":" addressBook.setGroup(target, editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SooYap"},"content":" updateFilteredGroupList(PREDICATE_SHOW_ALL_GROUPS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"ghos7ie"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Student List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"ghos7ie"},"content":" * Returns an unmodifiable view of the list of {@code Student} backed by the internal list of","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"ghos7ie"},"content":" public ObservableList\u003cStudent\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"ghos7ie"},"content":" return filteredStudents;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"SooYap"},"content":" return filteredGroups;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"ghos7ie"},"content":" public void updateFilteredPersonList(Predicate\u003cStudent\u003e predicate) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"ghos7ie"},"content":" filteredStudents.setPredicate(predicate);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"SooYap"},"content":" public void updateFilteredGroupList(Predicate\u003cGroup\u003e predicate) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"SooYap"},"content":" filteredGroups.setPredicate(predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 filteredStudents.equals(otherModelManager.filteredStudents)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 filteredGroups.equals(otherModelManager.filteredGroups);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":19,"SooYap":49,"-":133}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" ObservableList\u003cStudent\u003e getStudentList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" ObservableList\u003cGroup\u003e getGroupList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"SooYap":3,"-":15}},{"path":"src/main/java/seedu/address/model/State.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":" * Represents which state of display (Student, Group, Task) the GUI is currently in.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":" * Saved in UserPrefs.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"public class State {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":" private final String state;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":" public State(String state) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":" this.state \u003d state;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" public boolean equals(State other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" return this.state.equals(other.state);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":17}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" private static final State DEFAULT_STATE \u003d new State(\"Students\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" private static final State GROUP_STATE \u003d new State(\"Groups\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" private State guiState \u003d GROUP_STATE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" * Sets the state of the system to \"Students\".","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" public void setStateStudents() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" this.guiState \u003d DEFAULT_STATE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" * Sets the state of the system to \"Groups\".","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" public void setStateGroups() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" this.guiState \u003d GROUP_STATE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" public State getState() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" return this.guiState;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"SooYap":21,"-":87}},{"path":"src/main/java/seedu/address/model/group/Group.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" * Represents a Group in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"public class Group {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" private static final int MAXIMUM_STUDENTS_IN_GROUP \u003d 5;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private final GroupName groupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" private final Set\u003cStudent\u003e students \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" public Group(GroupName groupName, Set\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(groupName, students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" this.students.addAll(students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" public Group(GroupName groupName) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(groupName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" public GroupName getGroupName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" return this.groupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" public Set\u003cStudent\u003e getStudents() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" return Collections.unmodifiableSet(students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" * Adds a given student into the {@code group} object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" * There can be a maximum of 5 students in each group.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" * @param student The {@code student} object to be added.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" public void add(Student student) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" if (students.size() \u003c MAXIMUM_STUDENTS_IN_GROUP) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" students.add(student);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" * Returns true if both groups have the same name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" public boolean isSameGroup(Group otherGroup) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" if (otherGroup \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" return otherGroup !\u003d null","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 otherGroup.getGroupName().equals(getGroupName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":" * Returns true if both group have the same identity and data fields.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"SooYap"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof Group)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":" Group otherStudent \u003d (Group) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" return groupName.equals(otherStudent.groupName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 students.equals(otherStudent.students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" return Objects.hash(groupName, students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" .add(\"groupname\", groupName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":" .add(\"students\", students)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":106}},{"path":"src/main/java/seedu/address/model/group/GroupName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":" * Represents a Group name in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"public class GroupName {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" \"Group Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" public final String fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" * @param name A valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" public GroupName(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" fullName \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" return fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof seedu.address.model.group.GroupName)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" seedu.address.model.group.GroupName otherName \u003d (seedu.address.model.group.GroupName) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" return fullName.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":67}},{"path":"src/main/java/seedu/address/model/group/UniqueGroupList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" * A student is considered unique by comparing using {@code Student#isSamePerson(Student)}. As such, adding and","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" * updating of","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" * persons uses Student#isSamePerson(Student) for equality so as to ensure that the student being added or updated is","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" * unique in terms of identity in the UniqueStudentList. However, the removal of a student uses Student#equals","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" * (Object) so as to ensure that the student with exactly the same fields will be removed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" * @see Group#isSameGroup(Group)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"public class UniqueGroupList implements Iterable\u003cGroup\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" private final ObservableList\u003cGroup\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" private final ObservableList\u003cGroup\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" * Returns true if the list contains an equivalent student as the given argument.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" public boolean contains(Group toCheck) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" return internalList.stream().anyMatch(toCheck::isSameGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" * Adds a group to the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" * The group must not already exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" public void add(Group toAdd) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" * Replaces the student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group editedStudent) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(target, editedStudent);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" if (target.isSameGroup(editedStudent) \u0026\u0026 contains(editedStudent)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" internalList.set(index, editedStudent);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" * Removes the equivalent student from the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":" * The student must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" public void remove(Group toRemove) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" public void setGroups(UniqueGroupList replacement) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" * Replaces the contents of this list with {@code groups}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" * {@code students} must not contain duplicate groups.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":" public void setGroups(List\u003cGroup\u003e students) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" if (!groupsAreUnique(students)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":" internalList.setAll(students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":" public Iterator\u003cGroup\u003e iterator() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"SooYap"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof UniqueGroupList)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" UniqueGroupList otherUniqueGroupList \u003d (UniqueGroupList) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SooYap"},"content":" return internalList.equals(otherUniqueGroupList.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SooYap"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SooYap"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"SooYap"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"SooYap"},"content":" * Returns true if {@code groups} contains only unique groups.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"SooYap"},"content":" private boolean groupsAreUnique(List\u003cGroup\u003e groups) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"SooYap"},"content":" for (int i \u003d 0; i \u003c groups.size() - 1; i++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"SooYap"},"content":" for (int j \u003d i + 1; j \u003c groups.size(); j++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"SooYap"},"content":" if (groups.get(i).isSameGroup(groups.get(j))) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":151}},{"path":"src/main/java/seedu/address/model/student/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":" * Represents a Student\u0027s email in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":77}},{"path":"src/main/java/seedu/address/model/student/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":" * Represents a Student\u0027s name in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":64}},{"path":"src/main/java/seedu/address/model/student/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":" * Tests that a {@code Student}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cStudent\u003e {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" public boolean test(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(student.getName().fullName, keyword));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":5,"-":39}},{"path":"src/main/java/seedu/address/model/student/Student.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":" * Represents a Student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"public class Student {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"dez2003"},"content":" private final StudentNumber studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" private final Optional\u003cString\u003e group;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"YANYAN-w"},"content":" public Student(Name name, Email email, Set\u003cTag\u003e tags, StudentNumber studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"YANYAN-w"},"content":" requireAllNonNull(name, email, tags, studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" this.studentNumber \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" this.group \u003d Optional.empty();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":" public Student(Name name, Email email, Set\u003cTag\u003e tags, StudentNumber studentNumber, Optional\u003cString\u003e group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"YANYAN-w"},"content":" requireAllNonNull(name, email, tags, studentNumber, group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" this.group \u003d group;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"YANYAN-w"},"content":" this.studentNumber \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"dez2003"},"content":" public StudentNumber getStudentNumber() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" return studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" public Optional\u003cString\u003e getGroup() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" return group;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":" public boolean isSamePerson(Student otherStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"ghos7ie"},"content":" if (otherStudent \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":" return otherStudent !\u003d null","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"YANYAN-w"},"content":" \u0026\u0026 otherStudent.getStudentNumber().equals(getStudentNumber())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 otherStudent.getName().toString().toLowerCase().equals(getName().toString().toLowerCase());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"ghos7ie"},"content":" if (!(other instanceof Student)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" Student otherStudent \u003d (Student) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"ghos7ie"},"content":" return name.equals(otherStudent.name)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"ghos7ie"},"content":" \u0026\u0026 email.equals(otherStudent.email)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"YANYAN-w"},"content":" \u0026\u0026 tags.equals(otherStudent.tags)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"YANYAN-w"},"content":" \u0026\u0026 studentNumber.equals(otherStudent.studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"YANYAN-w"},"content":" return Objects.hash(name, email, studentNumber, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"dez2003"},"content":" .add(\"student number\", studentNumber)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":" .add(\"group\", group.orElse(\"\"))","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":10,"SooYap":23,"YANYAN-w":9,"-":83,"dez2003":7}},{"path":"src/main/java/seedu/address/model/student/StudentNumber.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"dez2003"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"dez2003"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"dez2003"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":" * Represents a Student\u0027s student number in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"dez2003"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidStudentNumber(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"dez2003"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"dez2003"},"content":"public class StudentNumber {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"dez2003"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"dez2003"},"content":" \"Student numbers should be of the format A01234567X\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"dez2003"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"dez2003"},"content":" + \"1. The student number should start with A0.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"dez2003"},"content":" + \"2. This is followed by exactly 7 numerical digits.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"dez2003"},"content":" + \"3. Lastly, it ends with another letter, which could be A or any other uppercase letter.\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"dez2003"},"content":" private static final String START_PART_REGEX \u003d \"^A0\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" private static final String DIGIT_PART_REGEX \u003d \"\\\\d{6}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"dez2003"},"content":" private static final String END_PART_REGEX \u003d \"[A-Z]$\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"dez2003"},"content":" public static final String VALIDATION_REGEX \u003d START_PART_REGEX + DIGIT_PART_REGEX + END_PART_REGEX;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"dez2003"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"dez2003"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"dez2003"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"dez2003"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"dez2003"},"content":" * @param studentNumber A valid student number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"dez2003"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"dez2003"},"content":" public StudentNumber(String studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":" requireNonNull(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"dez2003"},"content":" checkArgument(isValidStudentNumber(studentNumber), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"dez2003"},"content":" value \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"dez2003"},"content":" * Returns if a given string is a valid student number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"dez2003"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"dez2003"},"content":" public static boolean isValidStudentNumber(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"dez2003"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"dez2003"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"dez2003"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"dez2003"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"dez2003"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"dez2003"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"dez2003"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"dez2003"},"content":" if (!(other instanceof StudentNumber)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"dez2003"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"dez2003"},"content":" StudentNumber otherStudentNumber \u003d (StudentNumber) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"dez2003"},"content":" return value.equals(otherStudentNumber.value);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"dez2003"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"dez2003"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"dez2003"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"dez2003"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":1,"dez2003":67}},{"path":"src/main/java/seedu/address/model/student/UniqueStudentList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" * A student is considered unique by comparing using {@code Student#isSamePerson(Student)}. As such, adding and","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":" * updating of","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" * persons uses Student#isSamePerson(Student) for equality so as to ensure that the student being added or updated is","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":" * unique in terms of identity in the UniqueStudentList. However, the removal of a student uses Student#equals","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" * (Object) so as to ensure that the student with exactly the same fields will be removed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" * @see Student#isSamePerson(Student)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":"public class UniqueStudentList implements Iterable\u003cStudent\u003e {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":" private final ObservableList\u003cStudent\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" private final ObservableList\u003cStudent\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ghos7ie"},"content":" * Returns true if the list contains an equivalent student as the given argument.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public boolean contains(Student toCheck) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" * Adds a student to the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ghos7ie"},"content":" * The student must not already exist in the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" public void add(Student toAdd) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" * Replaces the student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ghos7ie"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" public void setPerson(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":" requireAllNonNull(target, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"ghos7ie"},"content":" if (!target.isSamePerson(editedStudent) \u0026\u0026 contains(editedStudent)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"ghos7ie"},"content":" internalList.set(index, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ghos7ie"},"content":" * Removes the equivalent student from the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" * The student must exist in the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ghos7ie"},"content":" public void remove(Student toRemove) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"ghos7ie"},"content":" public void setPersons(UniqueStudentList replacement) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":" * Replaces the contents of this list with {@code students}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"ghos7ie"},"content":" * {@code students} must not contain duplicate students.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" public void setPersons(List\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":" requireAllNonNull(students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"ghos7ie"},"content":" if (!personsAreUnique(students)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"ghos7ie"},"content":" internalList.setAll(students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"ghos7ie"},"content":" public ObservableList\u003cStudent\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"ghos7ie"},"content":" public Iterator\u003cStudent\u003e iterator() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"ghos7ie"},"content":" if (!(other instanceof UniqueStudentList)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList otherUniqueStudentList \u003d (UniqueStudentList) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"ghos7ie"},"content":" return internalList.equals(otherUniqueStudentList.internalList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"ghos7ie"},"content":" * Returns true if {@code students} contains only unique students.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"ghos7ie"},"content":" private boolean personsAreUnique(List\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"ghos7ie"},"content":" for (int i \u003d 0; i \u003c students.size() - 1; i++) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"ghos7ie"},"content":" for (int j \u003d i + 1; j \u003c students.size(); j++) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"ghos7ie"},"content":" if (students.get(i).isSamePerson(students.get(j))) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":44,"-":107}},{"path":"src/main/java/seedu/address/model/student/exceptions/DuplicatePersonException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student.exceptions;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" * identity).","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class DuplicatePersonException extends RuntimeException {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" public DuplicatePersonException() {","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":10}},{"path":"src/main/java/seedu/address/model/student/exceptions/PersonNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student.exceptions;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"ghos7ie"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":" * Signals that the operation is unable to find the specified student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ghos7ie"},"content":"public class PersonNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"ghos7ie":6}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"dez2003"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":" public static Student[] getSamplePersons() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" return new Student[]{","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Alex Yeoh\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" getTagSet(\"friends\"), new StudentNumber(\"A0737935G\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Bernice Yu\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" getTagSet(\"colleagues\", \"friends\"), new StudentNumber(\"A0597991H\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Charlotte Oliveiro\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" getTagSet(\"neighbours\"), new StudentNumber(\"A0632228J\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"David Li\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" getTagSet(\"family\"), new StudentNumber(\"A0965321G\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Irfan Ibrahim\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" getTagSet(\"classmates\"), new StudentNumber(\"A0467953H\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Roy Balakrishnan\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" getTagSet(\"colleagues\"), new StudentNumber(\"A0122764H\"))","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" for (Student sampleStudent : getSamplePersons()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" sampleAb.addStudent(sampleStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"ghos7ie":13,"SooYap":6,"-":33,"dez2003":1}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedGroup.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" * Jackson-friendly version of {@link Group}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"class JsonAdaptedGroup {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Group\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" private final String groupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" private final List\u003cJsonAdaptedPerson\u003e students \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" * Constructs a {@code JsonAdaptedGroup} with the given student details.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" @JsonCreator","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" public JsonAdaptedGroup(@JsonProperty(\"groupname\") String groupName,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" @JsonProperty(\"students\") List\u003cJsonAdaptedPerson\u003e students) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" if (students !\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" this.students.addAll(students);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" * Converts a given {@code Group} into this class for Jackson use.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" public JsonAdaptedGroup(Group source) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" groupName \u003d source.getGroupName().fullName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" students.addAll(source.getStudents().stream()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" * Converts this Jackson-friendly adapted student object into the model\u0027s {@code Group} object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted student.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" public Group toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" final List\u003cStudent\u003e allStudents \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" for (JsonAdaptedPerson student : this.students) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" allStudents.add(student.toModelType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" if (groupName \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" GroupName.class.getSimpleName()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" if (!GroupName.isValidName(groupName)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" throw new IllegalValueException(GroupName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" final GroupName modelGroupName \u003d new GroupName(groupName);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" final Set\u003cStudent\u003e modelStudents \u003d new HashSet\u003c\u003e(allStudents);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" return new Group(modelGroupName, modelStudents);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":73}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" * Jackson-friendly version of {@link Student}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Student\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"YANYAN-w"},"content":" private final String studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given student details.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"YANYAN-w"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"dez2003"},"content":" @JsonProperty(\"student number\") String studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":" this.studentNumber \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"ghos7ie"},"content":" * Converts a given {@code Student} into this class for Jackson use.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" public JsonAdaptedPerson(Student source) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"YANYAN-w"},"content":" studentNumber \u003d source.getStudentNumber().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" * Converts this Jackson-friendly adapted student object into the model\u0027s {@code Student} object.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"ghos7ie"},"content":" public Student toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"YANYAN-w"},"content":" if (studentNumber \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"dez2003"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"dez2003"},"content":" StudentNumber.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"YANYAN-w"},"content":" if (!StudentNumber.isValidStudentNumber(studentNumber)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"dez2003"},"content":" throw new IllegalValueException(StudentNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"YANYAN-w"},"content":" final StudentNumber modelStudentNumber \u003d new StudentNumber(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"YANYAN-w"},"content":" return new Student(modelName, modelEmail, modelTags, modelStudentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":13,"YANYAN-w":9,"-":72,"dez2003":4}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Students list contains duplicate student(s).\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_DUPLICATE_GROUP \u003d \"Groups list contains duplicate groups(s).\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" private final List\u003cJsonAdaptedGroup\u003e groups \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" @JsonProperty(\"groups\") List\u003cJsonAdaptedGroup\u003e groups) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" this.groups.addAll(groups);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" persons.addAll(source.getStudentList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" groups.addAll(source.getGroupList().stream().map(JsonAdaptedGroup::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":" if (addressBook.hasStudent(student)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" for (JsonAdaptedGroup jsonAdaptedGroup : groups) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" Group group \u003d jsonAdaptedGroup.toModelType();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" if (addressBook.hasGroup(group)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_GROUP);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" addressBook.addGroup(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"SooYap":17,"-":54}},{"path":"src/main/java/seedu/address/ui/GroupCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * An UI component that displays information of a {@code Student}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"public class GroupCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" private static final String FXML \u003d \"GroupListCard.fxml\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" public final Group group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" private HBox cardPane;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" private Label name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" private Label id;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" private VBox students;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" * Creates a {@code GroupCode} with the given {@code Group} and index to display.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" public GroupCard(Group group, int displayedIndex) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" super(FXML);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" this.group \u003d group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" name.setText(group.getGroupName().fullName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" group.getStudents().stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" .forEach(student -\u003e students.getChildren().add(new Label(student.toString())));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":51}},{"path":"src/main/java/seedu/address/ui/GroupListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"public class GroupListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" private static final String FXML \u003d \"GroupListPanel.fxml\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" private final Logger logger \u003d LogsCenter.getLogger(GroupListPanel.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" private ListView\u003cGroup\u003e groupListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" * Creates a {@code GroupListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" public GroupListPanel(ObservableList\u003cGroup\u003e groupList) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" super(FXML);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" groupListView.setItems(groupList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" groupListView.setCellFactory(listView -\u003e new GroupListViewCell());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Group} using a {@code GroupCard}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" class GroupListViewCell extends ListCell\u003cGroup\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" protected void updateItem(Group group, boolean empty) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" super.updateItem(group, empty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" if (empty || group \u003d\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" setGraphic(null);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" setText(null);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" setGraphic(new GroupCard(group, getIndex() + 1).getRoot());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":50}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.State;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" private static final State DEFAULT_STUDENT \u003d new State(\"Students\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" private static final State DEFAULT_GROUP \u003d new State(\"Groups\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" private StudentListPanel studentListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" private GroupListPanel groupListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" private StackPane informationListPanelPlaceholder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" studentListPanel \u003d new StudentListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":" groupListPanel \u003d new GroupListPanel(logic.getFilteredGroupList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":" if (this.logic.getState().equals(DEFAULT_STUDENT)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" informationListPanelPlaceholder.getChildren().add(studentListPanel.getRoot());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" informationListPanelPlaceholder.getChildren().add(groupListPanel.getRoot());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"SooYap"},"content":" public StudentListPanel getStudentListPanel() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"SooYap"},"content":" return studentListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"SooYap"},"content":" public GroupListPanel getGroupListPanel() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"SooYap"},"content":" return groupListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"SooYap":20,"-":190}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":" * An UI component that displays information of a {@code Student}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" public final Student student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":" @FXML","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" private Label studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" * Creates a {@code PersonCode} with the given {@code Student} and index to display.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ghos7ie"},"content":" public PersonCard(Student student, int displayedIndex) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" this.student \u003d student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" name.setText(student.getName().fullName);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" email.setText(student.getEmail().value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"dez2003"},"content":" studentNumber.setText(student.getStudentNumber().value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" student.getTags().stream()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"ghos7ie":9,"-":48,"dez2003":3}},{"path":"src/main/java/seedu/address/ui/StudentListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"public class StudentListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" private final Logger logger \u003d LogsCenter.getLogger(StudentListPanel.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":" private ListView\u003cStudent\u003e personListView;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" public StudentListPanel(ObservableList\u003cStudent\u003e studentList) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" personListView.setItems(studentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Student} using a {@code PersonCard}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" class PersonListViewCell extends ListCell\u003cStudent\u003e {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" protected void updateItem(Student student, boolean empty) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" super.updateItem(student, empty);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" if (empty || student \u003d\u003d null) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" setGraphic(new PersonCard(student, getIndex() + 1).getRoot());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"ghos7ie":9,"SooYap":4,"-":36}},{"path":"src/main/resources/view/GroupListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" \u003cVBox fx:id\u003d\"students\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":33}},{"path":"src/main/resources/view/GroupListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":" \u003cListView fx:id\u003d\"groupListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":8}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ghos7ie"},"content":" \u003cVBox fx:id\u003d\"studentList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" \u003cStackPane fx:id\u003d\"informationListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"1000\"/\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"SooYap":2,"-":58}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":" \u003cLabel fx:id\u003d\"studentNumber\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$student number\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"-":34,"dez2003":1}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.Messages.MESSAGE_STUDENT_NO_NOT_FOUND;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_NUMBER_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" String deleteCommand \u003d \"delete_student sno/A0000001A\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"YANYAN-w"},"content":" assertCommandException(deleteCommand, MESSAGE_STUDENT_NO_NOT_FOUND);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"ghos7ie"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"dez2003"},"content":" String addCommand \u003d AddStudentCommand.COMMAND_WORD + NAME_DESC_AMY + EMAIL_DESC_AMY + STUDENT_NUMBER_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"ghos7ie"},"content":" Student expectedStudent \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"ghos7ie"},"content":" expectedModel.addPerson(expectedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"ghos7ie":9,"SooYap":2,"YANYAN-w":1,"-":162,"dez2003":3}},{"path":"src/test/java/seedu/address/logic/commands/AddGroupCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":"public class AddGroupCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" private static final GroupName VALID_GROUPNAME \u003d new GroupName(\"Team1\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" public void constructor_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddGroupCommand(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" ModelStubAcceptingGroupAdded modelStub \u003d new ModelStubAcceptingGroupAdded();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" Student validStudent \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" Group validGroup \u003d new Group(VALID_GROUPNAME, new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" CommandResult commandResult \u003d new AddGroupCommand(validGroup).execute(modelStub);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" assertEquals(String.format(AddGroupCommand.MESSAGE_SUCCESS, Messages.format(validGroup)),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" assertEquals(Arrays.asList(validGroup), modelStub.groupsAdded);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" Group validGroup \u003d new Group(VALID_GROUPNAME, new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addGroupCommand \u003d new AddGroupCommand(validGroup);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" ModelStub modelStub \u003d new ModelStubWithGroup(validGroup);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" assertThrows(CommandException.class, AddGroupCommand.MESSAGE_DUPLICATE_GROUP, () -\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" addGroupCommand.execute(modelStub));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" Group teamOne \u003d new Group(new GroupName(\"Team 1\"), new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" Group teamTwo \u003d new Group(new GroupName(\"Team 2\"), new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addTeamOneCommand \u003d new AddGroupCommand(teamOne);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addTeamTwoCommand \u003d new AddGroupCommand(teamTwo);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" assertTrue(addTeamOneCommand.equals(addTeamOneCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addTeamOneCommandCopy \u003d new AddGroupCommand(teamOne);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":" assertTrue(addTeamOneCommand.equals(addTeamOneCommandCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" assertFalse(addTeamOneCommand.equals(1));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" assertFalse(addTeamOneCommand.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" assertFalse(addTeamOneCommand.equals(addTeamTwoCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":" Group teamOne \u003d new Group(new GroupName(\"Team 1\"), new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addTeamOneCommand \u003d new AddGroupCommand(teamOne);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" String expected \u003d AddGroupCommand.class.getCanonicalName() + \"{toAdd\u003d\" + teamOne + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":" assertEquals(expected, addTeamOneCommand.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"SooYap"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SooYap"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SooYap"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"SooYap"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"SooYap"},"content":" public void addPerson(Student student) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"SooYap"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SooYap"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"SooYap"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"SooYap"},"content":" public void deletePerson(Student target) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"SooYap"},"content":" public void setPerson(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group updatedGroup) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cStudent\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"SooYap"},"content":" public void updateFilteredPersonList(Predicate\u003cStudent\u003e predicate) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"SooYap"},"content":" * A Model stub that contains a single group.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"SooYap"},"content":" private class ModelStubWithGroup extends ModelStub {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"SooYap"},"content":" private final Group group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"SooYap"},"content":" ModelStubWithGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"SooYap"},"content":" this.group \u003d group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"SooYap"},"content":" return this.group.isSameGroup(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"SooYap"},"content":" * A Model stub that always accept the group being added.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"SooYap"},"content":" private class ModelStubAcceptingGroupAdded extends ModelStub {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"SooYap"},"content":" final ArrayList\u003cGroup\u003e groupsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"SooYap"},"content":" return groupsAdded.stream().anyMatch(group::isSameGroup);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"SooYap"},"content":" groupsAdded.add(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"SooYap"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"SooYap"},"content":" return new AddressBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":232}},{"path":"src/test/java/seedu/address/logic/commands/AddStudentCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"dez2003"},"content":" * Contains integration tests (interaction with the Model) for {@code AddStudentCommand}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommandIntegrationTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":" Student validStudent \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" expectedModel.addPerson(validStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"dez2003"},"content":" assertCommandSuccess(new AddStudentCommand(validStudent), model,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" String.format(AddStudentCommand.MESSAGE_SUCCESS, Messages.format(validStudent)),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" Student studentInList \u003d model.getAddressBook().getStudentList().get(0);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" assertCommandFailure(new AddStudentCommand(studentInList), model,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"dez2003"},"content":" AddStudentCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"ghos7ie":3,"SooYap":1,"-":38,"dez2003":6}},{"path":"src/test/java/seedu/address/logic/commands/AddStudentCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommandTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"dez2003"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddStudentCommand(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" Student validStudent \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"dez2003"},"content":" CommandResult commandResult \u003d new AddStudentCommand(validStudent).execute(modelStub);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":" assertEquals(String.format(AddStudentCommand.MESSAGE_SUCCESS, Messages.format(validStudent)),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" assertEquals(Arrays.asList(validStudent), modelStub.personsAdded);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" Student validStudent \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addCommand \u003d new AddStudentCommand(validStudent);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"dez2003"},"content":" assertThrows(CommandException.class, AddStudentCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"dez2003"},"content":" addCommand.execute(modelStub));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" Student alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"ghos7ie"},"content":" Student bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addAliceCommand \u003d new AddStudentCommand(alice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addBobCommand \u003d new AddStudentCommand(bob);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addAliceCommandCopy \u003d new AddStudentCommand(alice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addCommand \u003d new AddStudentCommand(ALICE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"dez2003"},"content":" String expected \u003d AddStudentCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"ghos7ie"},"content":" public void addPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"ghos7ie"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"ghos7ie"},"content":" public void deletePerson(Student target) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"ghos7ie"},"content":" public void setPerson(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group updatedGroup) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"ghos7ie"},"content":" public ObservableList\u003cStudent\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"ghos7ie"},"content":" public void updateFilteredPersonList(Predicate\u003cStudent\u003e predicate) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"ghos7ie"},"content":" * A Model stub that contains a single student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"ghos7ie"},"content":" private final Student student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"ghos7ie"},"content":" ModelStubWithPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"ghos7ie"},"content":" this.student \u003d student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"ghos7ie"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"ghos7ie"},"content":" return this.student.isSamePerson(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"ghos7ie"},"content":" * A Model stub that always accept the student being added.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"ghos7ie"},"content":" final ArrayList\u003cStudent\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"ghos7ie"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"ghos7ie"},"content":" return personsAdded.stream().anyMatch(student::isSamePerson);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"ghos7ie"},"content":" public void addPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"ghos7ie"},"content":" personsAdded.add(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":30,"SooYap":14,"-":171,"dez2003":12}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" public static final String VALID_STUDENT_NUMBER_AMY \u003d \"A0234567J\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" public static final String VALID_STUDENT_NUMBER_BOB \u003d \"A0224466H\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_ONE \u003d \"Team1\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_TWO \u003d \"Team2\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_THREE \u003d \"Team3\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_FOUR \u003d \"Team4\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_FIVE \u003d \"Team5\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" public static final String GROUP_ONE \u003d \"Group1\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" public static final String GROUP_TEN \u003d \"Group10\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_STUDENT_NAME + VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"dez2003"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_STUDENT_NAME + VALID_NAME_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"dez2003"},"content":" public static final String STUDENT_NUMBER_DESC_AMY \u003d \" \" + PREFIX_STUDENT_NUMBER + VALID_STUDENT_NUMBER_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"dez2003"},"content":" public static final String STUDENT_NUMBER_DESC_BOB \u003d \" \" + PREFIX_STUDENT_NUMBER + VALID_STUDENT_NUMBER_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"dez2003"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_STUDENT_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"dez2003"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_FRIEND).withStudentNumber(VALID_STUDENT_NUMBER_AMY).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"dez2003"},"content":" .withEmail(VALID_EMAIL_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"dez2003"},"content":" .withStudentNumber(VALID_STUDENT_NUMBER_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"ghos7ie"},"content":" * - the address book, filtered student list and selected student in {@code actualModel} remain unchanged","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"ghos7ie"},"content":" * Updates {@code model}\u0027s filtered list to show only the student at the given {@code targetIndex} in the","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"ghos7ie"},"content":" final String[] splitName \u003d student.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":8,"SooYap":9,"-":102,"dez2003":10}},{"path":"src/test/java/seedu/address/logic/commands/DeleteStudentCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"YANYAN-w"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"YANYAN-w"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"YANYAN-w"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"YANYAN-w"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"YANYAN-w"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.parser.DeleteStudentCommandParser;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"YANYAN-w"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"YANYAN-w"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"YANYAN-w"},"content":" * {@code DeleteStudentCommand}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"YANYAN-w"},"content":"public class DeleteStudentCommandTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"YANYAN-w"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"YANYAN-w"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"YANYAN-w"},"content":" public void execute_validStudentNumber_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"YANYAN-w"},"content":" Student studentToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber studentNumber \u003d studentToDelete.getStudentNumber();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteStudentCommand \u003d new DeleteStudentCommand(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"YANYAN-w"},"content":" String expectedMessage \u003d String.format(DeleteStudentCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"YANYAN-w"},"content":" Messages.format(studentToDelete));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"YANYAN-w"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"YANYAN-w"},"content":" expectedModel.deletePerson(studentToDelete);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"YANYAN-w"},"content":" assertCommandSuccess(deleteStudentCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"YANYAN-w"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"YANYAN-w"},"content":" public void execute_invalidStudentNumber_throwsCommandException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" assertParseFailure(new DeleteStudentCommandParser(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" \"B1234567\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"YANYAN-w"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"YANYAN-w"},"content":" public void equals() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber sno1 \u003d new StudentNumber(\"A0123456B\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber sno2 \u003d new StudentNumber(\"A0123456C\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteFirstCommand \u003d new DeleteStudentCommand(sno1);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteSecondCommand \u003d new DeleteStudentCommand(sno2);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"YANYAN-w"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"YANYAN-w"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"YANYAN-w"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteFirstCommandCopy \u003d new DeleteStudentCommand(sno1);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"YANYAN-w"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"YANYAN-w"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"YANYAN-w"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"YANYAN-w"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"YANYAN-w"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"YANYAN-w"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"YANYAN-w"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"YANYAN-w"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"YANYAN-w"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber targetNumber \u003d new StudentNumber(\"A0123456B\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteStudentCommand \u003d new DeleteStudentCommand(targetNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" String expected \u003d DeleteStudentCommand.class.getCanonicalName() + \"{targetStudentNumber\u003d\" + targetNumber + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"YANYAN-w"},"content":" assertEquals(expected, deleteStudentCommand.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"YANYAN-w"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"YANYAN-w"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"YANYAN-w"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"YANYAN-w"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"YANYAN-w"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"YANYAN-w"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":6,"YANYAN-w":86}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"dez2003"},"content":" Student editedStudent \u003d new PersonBuilder().build(); //Amy Bee, amy@gmail.com, A01234567X","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"ghos7ie"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedStudent).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ghos7ie"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" Student lastStudent \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" Student editedStudent \u003d personInList.withName(VALID_NAME_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"ghos7ie"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"ghos7ie"},"content":" expectedModel.setPerson(lastStudent, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" Student editedStudent \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ghos7ie"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":" Student studentInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"ghos7ie"},"content":" Student editedStudent \u003d new PersonBuilder(studentInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"dez2003"},"content":" Student firstStudent \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); //0","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"ghos7ie"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstStudent).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"dez2003"},"content":" System.out.println(descriptor);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"dez2003"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor); //1","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"ghos7ie"},"content":" // edit student in filtered list into a duplicate in address book","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" Student studentInList \u003d model.getAddressBook().getStudentList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"ghos7ie"},"content":" new EditPersonDescriptorBuilder(studentInList).build());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"SooYap"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getStudentList().size());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":19,"SooYap":2,"-":158,"dez2003":4}},{"path":"src/test/java/seedu/address/logic/commands/EditStudentDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"public class EditStudentDescriptorTest {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" + editPersonDescriptor.getName().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ghos7ie"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"dez2003"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", student number\u003d\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"dez2003"},"content":" + editPersonDescriptor.getStudentNumber().orElse(null) + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":3,"-":55,"dez2003":2}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":89}},{"path":"src/test/java/seedu/address/logic/parser/AddStudentCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_NUMBER_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_NUMBER_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommandParserTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"dez2003"},"content":" private AddStudentCommandParser parser \u003d new AddStudentCommandParser();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" Student expectedStudent \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB, new AddStudentCommand(expectedStudent));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" Student expectedStudentMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"dez2003"},"content":" NAME_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"dez2003"},"content":" new AddStudentCommand(expectedStudentMultipleTags));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"ghos7ie"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NAME));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"dez2003"},"content":" // multiple student numbers","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"dez2003"},"content":" assertParseFailure(parser, STUDENT_NUMBER_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NUMBER));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"dez2003"},"content":" validExpectedPersonString + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"dez2003"},"content":" + STUDENT_NUMBER_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_STUDENT_NUMBER));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NAME));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NAME));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"ghos7ie"},"content":" Student expectedStudent \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"dez2003"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + EMAIL_DESC_AMY + STUDENT_NUMBER_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"dez2003"},"content":" new AddStudentCommand(expectedStudent));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"dez2003"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddStudentCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, VALID_NAME_BOB + EMAIL_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_EMAIL_BOB, expectedMessage);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_EMAIL_BOB, expectedMessage);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + EMAIL_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, NAME_DESC_BOB + EMAIL_DESC_BOB + INVALID_TAG_DESC","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"dez2003"},"content":" + VALID_TAG_FRIEND + STUDENT_NUMBER_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"dez2003"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + EMAIL_DESC_BOB + INVALID_TAG_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"dez2003"},"content":" + STUDENT_NUMBER_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"dez2003"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"ghos7ie":15,"-":102,"dez2003":32}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.DeleteStudentCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"dez2003"},"content":" AddStudentCommand command \u003d (AddStudentCommand) parser.parseCommand(PersonUtil.getAddCommand(student));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"dez2003"},"content":" assertEquals(new AddStudentCommand(student), command);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" DeleteStudentCommand command \u003d (DeleteStudentCommand) parser.parseCommand(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" DeleteStudentCommand.COMMAND_WORD + \" sno/\" + ALICE.getStudentNumber().toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" assertEquals(new DeleteStudentCommand(ALICE.getStudentNumber()), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(student).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":5,"SooYap":5,"-":89,"dez2003":3}},{"path":"src/test/java/seedu/address/logic/parser/DeleteStudentCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.DeleteStudentCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"public class DeleteStudentCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private DeleteStudentCommandParser parser \u003d new DeleteStudentCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" assertParseSuccess(parser, \" sno/ \" + ALICE.getStudentNumber().toString(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" new DeleteStudentCommand(ALICE.getStudentNumber()));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"SooYap":8,"-":26}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ghos7ie"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Student} being edited,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_TAG_FRIEND,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"ghos7ie"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" + EMAIL_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"ghos7ie"},"content":" String userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"ghos7ie"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"dez2003"},"content":" // AddStudentCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"ghos7ie"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_EMAIL_DESC + EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"ghos7ie"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_BOB + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"ghos7ie"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"ghos7ie"},"content":" + TAG_DESC_FRIEND + EMAIL_DESC_AMY + TAG_DESC_FRIEND + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"ghos7ie"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"ghos7ie"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_EMAIL_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"ghos7ie"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"ghos7ie":18,"-":155,"dez2003":1}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":142}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" private static final Group DUMMY_GROUP \u003d new Group(new GroupName(\"Dummy Group\"));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" assertEquals(Collections.emptyList(), addressBook.getStudentList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" assertEquals(Collections.emptyList(), addressBook.getGroupList());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" // Two students with the same identity fields","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e newStudents \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ghos7ie"},"content":" AddressBookStub newData \u003d new AddressBookStub(newStudents);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"ghos7ie"},"content":" public void hasPerson_nullStudent_throwsNullPointerException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasStudent(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" public void hasGroup_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasGroup(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ghos7ie"},"content":" public void hasPerson_studentNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":" assertFalse(addressBook.hasStudent(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" public void hasGroup_groupNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" assertFalse(addressBook.hasGroup(DUMMY_GROUP));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" public void hasPerson_studentInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"ghos7ie"},"content":" assertTrue(addressBook.hasStudent(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":" public void hasGroup_groupInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":" addressBook.addGroup(DUMMY_GROUP);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" assertTrue(addressBook.hasGroup(DUMMY_GROUP));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":" public void hasPerson_studentWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"ghos7ie"},"content":" assertTrue(addressBook.hasStudent(editedAlice));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getStudentList().remove(0));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{students\u003d\" + addressBook.getStudentList() + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"ghos7ie"},"content":" * A stub ReadOnlyAddressBook whose students list can violate interface constraints.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"ghos7ie"},"content":" private final ObservableList\u003cStudent\u003e students \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" private final ObservableList\u003cGroup\u003e groups \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":" AddressBookStub(Collection\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"ghos7ie"},"content":" this.students.setAll(students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" this.groups.setAll(groups);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cStudent\u003e getStudentList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"ghos7ie"},"content":" return students;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getGroupList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SooYap"},"content":" return groups;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":22,"SooYap":24,"-":88}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" private static final Group DUMMY_GROUP \u003d new Group(new GroupName(\"Dummy Group\"));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" public void hasGroup_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasGroup(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" public void hasGroup_groupNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" assertFalse(modelManager.hasGroup(DUMMY_GROUP));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":" public void hasGroup_groupInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" modelManager.addGroup(DUMMY_GROUP);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":" assertTrue(modelManager.hasGroup(DUMMY_GROUP));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"SooYap":19,"-":131}},{"path":"src/test/java/seedu/address/model/group/GroupNameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"public class GroupNameTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e new GroupName(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new GroupName(invalidName));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" public void isValidName() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" // null name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e GroupName.isValidName(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" // invalid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" assertFalse(GroupName.isValidName(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" assertFalse(GroupName.isValidName(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" assertFalse(GroupName.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" assertFalse(GroupName.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" // valid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" GroupName groupName \u003d new GroupName(\"Valid Name\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" assertTrue(groupName.equals(new GroupName(\"Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" assertTrue(groupName.equals(groupName));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" assertFalse(groupName.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" assertFalse(groupName.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" assertFalse(groupName.equals(new GroupName(\"Other Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":60}},{"path":"src/test/java/seedu/address/model/group/GroupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"public class GroupTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" private static final Group FIRST_GROUP \u003d new Group(new GroupName(GROUP_ONE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" private static final Group SECOND_GROUP \u003d new Group(new GroupName(TEAM_ONE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" public void isSameGroup() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" assertTrue(FIRST_GROUP.isSameGroup(FIRST_GROUP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" assertTrue(SECOND_GROUP.isSameGroup(SECOND_GROUP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" assertFalse(FIRST_GROUP.isSameGroup(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" Group firstGroupCopy \u003d new Group(FIRST_GROUP.getGroupName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" assertTrue(FIRST_GROUP.equals(firstGroupCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" assertTrue(FIRST_GROUP.equals(FIRST_GROUP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" assertFalse(FIRST_GROUP.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" assertFalse(FIRST_GROUP.equals(5));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" assertFalse(FIRST_GROUP.equals(SECOND_GROUP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" String expected \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" Group.class.getCanonicalName() + \"{groupname\u003d\" + FIRST_GROUP.getGroupName()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" + \", students\u003d\" + FIRST_GROUP.getStudents() + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" assertEquals(expected, FIRST_GROUP.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":51}},{"path":"src/test/java/seedu/address/model/group/UniqueGroupListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"public class UniqueGroupListTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" private static final Group DUMMY_GROUP \u003d new Group(new GroupName(\"Team1\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" private final UniqueGroupList uniqueGroupList \u003d new UniqueGroupList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" public void contains_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.contains(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" public void contains_groupNotInList_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" assertFalse(uniqueGroupList.contains(DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" public void contains_groupInList_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.add(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" assertTrue(uniqueGroupList.contains(DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" public void add_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.add(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" public void add_duplicateGroup_throwsDuplicateGroupException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.add(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueGroupList.add(DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" public void setGroup_nullTargetGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.setGroup(null, DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" public void setGroup_nullEditedGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.setGroup(DUMMY_GROUP, null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" public void setGroup_targetGroupNotInList_throwsGroupNotFoundException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueGroupList.setGroup(DUMMY_GROUP, DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" public void remove_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.remove(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" public void remove_groupDoesNotExist_throwsGroupNotFoundException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueGroupList.remove(DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" public void remove_existingGroup_removesGroup() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.add(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.remove(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":" UniqueGroupList expectedUniqueGroupList \u003d new UniqueGroupList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"SooYap"},"content":" assertEquals(expectedUniqueGroupList, uniqueGroupList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" public void setGroup_nullUniqueGroupList_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.setGroup((Group) null, (Group) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" public void setGroup_listWithDuplicateGroup_throwsDuplicatePersonException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.add(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueGroupList.setGroup(DUMMY_GROUP, DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":" assertEquals(uniqueGroupList.asUnmodifiableObservableList().toString(), uniqueGroupList.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":93}},{"path":"src/test/java/seedu/address/model/student/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":87}},{"path":"src/test/java/seedu/address/model/student/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ghos7ie"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" .withEmail(\"alice@email.com\").build()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"-":81}},{"path":"src/test/java/seedu/address/model/student/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":59}},{"path":"src/test/java/seedu/address/model/student/StudentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_NUMBER_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.TypicalPersons.JASON;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":"public class StudentTest {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ghos7ie"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e student.getTags().remove(0));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" assertTrue(JASON.isSamePerson(JASON));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"dez2003"},"content":" // different student number, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withStudentNumber(VALID_STUDENT_NUMBER_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" Student editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_AMY.toLowerCase()).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" // student name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":" Student aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ghos7ie"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":" String expected \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"ghos7ie"},"content":" Student.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"dez2003"},"content":" + \", tags\u003d\" + ALICE.getTags() + \", student number\u003d\" + ALICE.getStudentNumber()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"dez2003"},"content":" + \", group\u003d\" + ALICE.getGroup().orElse(\"\") + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"ghos7ie":11,"SooYap":6,"-":74,"dez2003":4}},{"path":"src/test/java/seedu/address/model/student/UniqueStudentListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":"public class UniqueStudentListTest {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":" private final UniqueStudentList uniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.contains(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" assertFalse(uniqueStudentList.contains(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" assertTrue(uniqueStudentList.contains(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ghos7ie"},"content":" assertTrue(uniqueStudentList.contains(editedAlice));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.add(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueStudentList.add(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setPerson(null, ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setPerson(ALICE, null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueStudentList.setPerson(ALICE, ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPerson(ALICE, ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(editedAlice);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPerson(ALICE, BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueStudentList.setPerson(ALICE, BOB));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.remove(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueStudentList.remove(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.remove(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setPersons((UniqueStudentList) null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPersons(expectedUniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setPersons((List\u003cStudent\u003e) null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e studentList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPersons(studentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e listWithDuplicateStudents \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"ghos7ie"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueStudentList.setPersons(listWithDuplicateStudents));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"ghos7ie"},"content":" -\u003e uniqueStudentList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"ghos7ie"},"content":" assertEquals(uniqueStudentList.asUnmodifiableObservableList().toString(), uniqueStudentList.toString());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"ghos7ie":60,"-":114}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedGroupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.storage.JsonAdaptedGroup.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"public class JsonAdaptedGroupTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" private static final String INVALID_NAME \u003d \"Te@m1\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" private static final String VALID_STUDENT_NUMBER \u003d BENSON.getStudentNumber().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" public void toModelType_validGroupDetails_returnsGroup() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" Group teamOne \u003d new Group(new GroupName(\"Team1\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" JsonAdaptedGroup group \u003d new JsonAdaptedGroup(teamOne);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" assertEquals(teamOne, group.toModelType());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" public void toModelType_invalidGroupName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" JsonAdaptedGroup group \u003d new JsonAdaptedGroup(INVALID_NAME, new ArrayList\u003cJsonAdaptedPerson\u003e());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" String expectedMessage \u003d GroupName.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalValueException.class, expectedMessage, group::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" JsonAdaptedGroup group \u003d new JsonAdaptedGroup(null, new ArrayList\u003cJsonAdaptedPerson\u003e());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, GroupName.class.getSimpleName());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalValueException.class, expectedMessage, group::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":48}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedStudentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"public class JsonAdaptedStudentTest {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"dez2003"},"content":" private static final String VALID_STUDENT_NUMBER \u003d BENSON.getStudentNumber().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"dez2003"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_EMAIL, VALID_TAGS, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_EMAIL, VALID_TAGS, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"dez2003"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_EMAIL, VALID_TAGS, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"dez2003"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_TAGS, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"dez2003"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_EMAIL, invalidTags, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":3,"-":66,"dez2003":6}},{"path":"src/test/java/seedu/address/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.IDA;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" public void readAddressBook_invalidGroupAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidGroupAddressBook.json\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":" original.addStudent(HOON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" original.removeStudent(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":" original.addStudent(IDA);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":3,"SooYap":5,"-":107}},{"path":"src/test/java/seedu/address/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.testutil.TypicalGroups;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" private static final Path DUPLICATE_GROUP_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateGroupAddressBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" private static final Path INVALID_GROUP_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidGroupAddressBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" private static final Path TYPICAL_GROUPS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalGroupAddressBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void toModelType_typicalPersonsFile_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" public void toModelType_duplicateGroups_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_GROUP_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_GROUP,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" public void toModelType_invalidGroupFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_GROUP_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" public void toModelType_typicalGroupsFile_success() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_GROUPS_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalGroups.getTypicalAddressBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"SooYap":28,"-":47}},{"path":"src/test/java/seedu/address/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" addressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" * Adds a new {@code Student} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":" public AddressBookBuilder withPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"-":30}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"dez2003"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code student}\u0027s details","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" public EditPersonDescriptorBuilder(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" descriptor.setName(student.getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" descriptor.setEmail(student.getEmail());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" descriptor.setTags(student.getTags());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" descriptor.setStudentNumber(student.getStudentNumber());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"dez2003"},"content":" public EditPersonDescriptorBuilder withStudentNumber(String studentNumber) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"dez2003"},"content":" descriptor.setStudentNumber(new StudentNumber(studentNumber));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":8,"-":66,"dez2003":4}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"dez2003"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":" * A utility class to help with building Student objects.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" public static final String DEFAULT_STUDENT_NUMBER \u003d \"A0123456X\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"dez2003"},"content":" private StudentNumber studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" private Optional\u003cString\u003e group;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"dez2003"},"content":" studentNumber \u003d new StudentNumber(DEFAULT_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" group \u003d Optional.empty();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" * Initializes the PersonBuilder with the data of {@code studentToCopy}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" public PersonBuilder(Student studentToCopy) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" name \u003d studentToCopy.getName();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" email \u003d studentToCopy.getEmail();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ghos7ie"},"content":" tags \u003d new HashSet\u003c\u003e(studentToCopy.getTags());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"dez2003"},"content":" studentNumber \u003d studentToCopy.getStudentNumber();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" group \u003d studentToCopy.getGroup();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" * Sets the {@code Name} of the {@code Student} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Student} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" * Sets the {@code String} group name of the {@code Student} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" public PersonBuilder withGroup(String group) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" this.group \u003d Optional.of(group);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ghos7ie"},"content":" * Sets the {@code Email} of the {@code Student} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"dez2003"},"content":" * Sets the {@code StudentNumber} of the {@code Student} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"dez2003"},"content":" public PersonBuilder withStudentNumber(String studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"dez2003"},"content":" this.studentNumber \u003d new StudentNumber(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"dez2003"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"dez2003"},"content":" * Builds a {@code Student}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"dez2003"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"dez2003"},"content":" * @returns A Student.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"dez2003"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"ghos7ie"},"content":" public Student build() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"dez2003"},"content":" return group.isPresent()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"dez2003"},"content":" ? new Student(name, email, tags, studentNumber, group) : new Student(name, email, tags, studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"ghos7ie":13,"SooYap":8,"-":66,"dez2003":14}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" * A utility class for Student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" * Returns an add command string for adding the {@code student}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":" public static String getAddCommand(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"dez2003"},"content":" return AddStudentCommand.COMMAND_WORD + \" \" + getPersonDetails(student);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":" * Returns the part of command string for the given {@code student}\u0027s details.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":" public static String getPersonDetails(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":" sb.append(PREFIX_STUDENT_NAME + student.getName().fullName + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ghos7ie"},"content":" sb.append(PREFIX_EMAIL + student.getEmail().value + \" \");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" student.getTags().stream().forEach(","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" sb.append(PREFIX_STUDENT_NUMBER + student.getStudentNumber().value + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_STUDENT_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"dez2003"},"content":" sb.append(PREFIX_TAG).append(\" \");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"dez2003"},"content":" descriptor.getStudentNumber().ifPresent(studentNumber -\u003e sb.append(PREFIX_STUDENT_NUMBER)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"dez2003"},"content":" .append(studentNumber.value));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":8,"-":42,"dez2003":10}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" * Returns the middle index of the student in the {@code model}\u0027s student list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size() / 2);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" * Returns the last index of the student in the {@code model}\u0027s student list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" * Returns the student in the {@code model}\u0027s student list at {@code index}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" public static Student getPerson(Model model, Index index) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList().get(index.getZeroBased());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":5,"-":50}},{"path":"src/test/java/seedu/address/testutil/TypicalGroups.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_TEN;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_FIVE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_FOUR;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_THREE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_TWO;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" * A utility class containing a list of {@code Group} objects to be used in tests.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"public class TypicalGroups {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private TypicalGroups() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" } // prevents instantiation","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" * Returns an {@code AddressBook} with all the typical persons and groups.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_FIVE)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_FOUR)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_THREE)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_TWO)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(GROUP_ONE)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_ONE)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(GROUP_TEN)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" return ab;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":38}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_NUMBER_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_NUMBER_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" * A utility class containing a list of {@code Student} objects to be used in tests.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" public static final Student ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" .withEmail(\"alice@example.com\").withTags(\"friends\").withStudentNumber(\"A0111111J\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":" public static final Student BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" .withEmail(\"johnd@example.com\").withTags(\"owesMoney\", \"friends\").withStudentNumber(\"A0222222H\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"dez2003"},"content":" public static final Student CARL \u003d new PersonBuilder().withName(\"Carl Kurz\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" .withEmail(\"heinz@example.com\").withStudentNumber(\"A0333333M\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":" public static final Student DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" .withEmail(\"cornelia@example.com\").withTags(\"friends\").withStudentNumber(\"A0444444N\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" public static final Student ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" .withEmail(\"werner@example.com\").withStudentNumber(\"A0555555H\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" public static final Student FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" .withEmail(\"lydia@example.com\").withStudentNumber(\"A0666666J\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" public static final Student GEORGE \u003d new PersonBuilder().withName(\"George Best\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" .withEmail(\"anna@example.com\").withStudentNumber(\"A0888888M\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" public static final Student JASON \u003d new PersonBuilder().withName(\"Jason Derulo\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" .withEmail(\"jason@example.com\").withGroup(\"Group 1\").withStudentNumber(\"A0999999J\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ghos7ie"},"content":" public static final Student HOON \u003d new PersonBuilder().withName(\"Hoon Meier\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" .withEmail(\"stefan@example.com\").withStudentNumber(\"A0969743K\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" public static final Student IDA \u003d new PersonBuilder().withName(\"Ida Mueller\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" .withEmail(\"hans@example.com\").withStudentNumber(\"A0887321S\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" // Manually added - Student\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"ghos7ie"},"content":" public static final Student AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"dez2003"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_FRIEND).withStudentNumber(VALID_STUDENT_NUMBER_AMY).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" public static final Student BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" .withEmail(VALID_EMAIL_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"dez2003"},"content":" .withStudentNumber(VALID_STUDENT_NUMBER_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" private TypicalPersons() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" } // prevents instantiation","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"ghos7ie"},"content":" for (Student student : getTypicalPersons()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"ghos7ie"},"content":" ab.addStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"ghos7ie"},"content":" public static List\u003cStudent\u003e getTypicalPersons() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":19,"SooYap":11,"-":38,"dez2003":5}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"# T_Assistant","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"YANYAN-w"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103-F12-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103-F12-2/tp/actions)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":"[![codecov](https://codecov.io/gh/nus-cs2103-AY2425S1/tp/graph/badge.svg?token\u003dJA7RQH158C)](https://codecov.io/gh/nus-cs2103-AY2425S1/tp)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ghos7ie"},"content":"T_Assistant is an **address book made for CS2103 tutors** to easily track their students\u0027 groupings and taskings, optimised for users who prefer a CLI program.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"## Features","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"1. **Store** student information.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"2. **Store** group information and the tasks they have.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"3. **Track** progress of each group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"If you are interested in **using** T_Assistant, head over to the [User Guide](https://ay2425s1-cs2103-f12-2.github.io/tp/)!","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":"If you are interested in **developing** T_Assistant, head over to the [Developer Guide](https://ay2425s1-cs2103-f12-2.github.io/tp/DeveloperGuide.html)!","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-18","isFullCredit":false}],"authorContributionMap":{"ghos7ie":14,"YANYAN-w":1,"-":6}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"### Lewis Lye","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"YANYAN-w"},"content":"\u003cimg src\u003d\"images/ghos7ie.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"[[github](http://github.com/ghos7ie)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":"* Role: Developer","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":"* Responsibilities: Documentation","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"YANYAN-w"},"content":"### Wang Hongyanyan","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"YANYAN-w"},"content":"\u003cimg src\u003d\"images/yanyan-w.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"YANYAN-w"},"content":"[[github](http://github.com/YANYAN-w)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"YANYAN-w"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"YANYAN-w"},"content":"* Responsibilities: Ensure project deliverables are done on time and in the right format.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":"### Tan Soo Yap","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":"\u003cimg src\u003d\"images/sooyap.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"[[github](https://github.com/SooYap)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":"* Role: Developer and Testing","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":"* Responsibilities: Dev Ops + Code Testing","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":"### Desiree Sng","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":"\u003cimg src\u003d\"images/dez2003.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"dez2003"},"content":"[[github](http://github.com/dez2003)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"dez2003"},"content":"* Responsibilities: Code Quality","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"SooYap":5,"YANYAN-w":6,"-":33,"dez2003":4}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"# T_Assistant Developer Guide","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"original source as well }_","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":"**`Main`** (consisting of classes [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"ghos7ie"},"content":"`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":"`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ghos7ie"},"content":"charge of the app launch and shut down.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":"the command `delete 1`.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"ghos7ie"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ghos7ie"},"content":" `interface` mentioned in the previous point.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"ghos7ie"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"ghos7ie"},"content":"the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ghos7ie"},"content":"through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":"implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":"The **API** of this component is specified in [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":"`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"ghos7ie"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"ghos7ie"},"content":"`StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":"the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"ghos7ie"},"content":"are in the `src/main/resources/view` folder. For example, the layout of the [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"ghos7ie"},"content":"`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":"is specified in [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":"`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"ghos7ie"},"content":"**API** : [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"ghos7ie"},"content":"`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"ghos7ie"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"ghos7ie"},"content":"call as an example.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"ghos7ie"},"content":"PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"ghos7ie"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"ghos7ie"},"content":" a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"ghos7ie"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"ghos7ie"},"content":" is executed by the `LogicManager`.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"ghos7ie"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a student).\u003cbr\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"ghos7ie"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"ghos7ie"},"content":" several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"ghos7ie"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"ghos7ie"},"content":" placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"ghos7ie"},"content":" the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"ghos7ie"},"content":" `Command` object.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"ghos7ie"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"ghos7ie"},"content":" interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"ghos7ie"},"content":"**API** : [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"ghos7ie"},"content":"`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"ghos7ie"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"ghos7ie"},"content":" is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"ghos7ie"},"content":" this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"ghos7ie"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"ghos7ie"},"content":" `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"ghos7ie"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"ghos7ie"},"content":" should make sense on their own without depending on other components)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"ghos7ie"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"ghos7ie"},"content":"`Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"ghos7ie"},"content":"needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"ghos7ie"},"content":"**API** : [","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"ghos7ie"},"content":"`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"ghos7ie"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"ghos7ie"},"content":" objects.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"ghos7ie"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"ghos7ie"},"content":" the functionality of only one is needed).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"ghos7ie"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"ghos7ie"},"content":" that belong to the `Model`)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"ghos7ie"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"ghos7ie"},"content":"history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"ghos7ie"},"content":"following operations:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"ghos7ie"},"content":"* `VersionedAddressBook#commit()`— Saves the current address book state in its history.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"ghos7ie"},"content":"* `VersionedAddressBook#undo()`— Restores the previous address book state from its history.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"ghos7ie"},"content":"* `VersionedAddressBook#redo()`— Restores a previously undone address book state from its history.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"ghos7ie"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"ghos7ie"},"content":"`Model#redoAddressBook()` respectively.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"ghos7ie"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"ghos7ie"},"content":"initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"ghos7ie"},"content":"Step 2. The user executes `delete 5` command to delete the 5th student in the address book. The `delete` command calls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"ghos7ie"},"content":"`Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"ghos7ie"},"content":"saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"ghos7ie"},"content":"Step 3. The user executes `add n/David …​` to add a new student. The `add` command also calls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"ghos7ie"},"content":"`Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"ghos7ie"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"ghos7ie"},"content":"not be saved into the `addressBookStateList`.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"ghos7ie"},"content":"Step 4. The user now decides that adding the student was a mistake, and decides to undo that action by executing the","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"ghos7ie"},"content":"`undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"ghos7ie"},"content":"to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"ghos7ie"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"ghos7ie"},"content":"previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"ghos7ie"},"content":"case. If so, it will return an error to the user rather","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"ghos7ie"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"ghos7ie"},"content":"lifeline reaches the end of diagram.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"ghos7ie"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"ghos7ie"},"content":"to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"ghos7ie"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"ghos7ie"},"content":"book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"ghos7ie"},"content":"to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"ghos7ie"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"ghos7ie"},"content":"`list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"ghos7ie"},"content":"the `addressBookStateList` remains unchanged.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"ghos7ie"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"ghos7ie"},"content":"pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"ghos7ie"},"content":"purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"ghos7ie"},"content":"desktop applications follow.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"ghos7ie"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the student being deleted).","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"ghos7ie"},"content":"* CS2103 tutor","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"ghos7ie"},"content":"* has a need to manage a significant number of students","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"ghos7ie"},"content":"**Value proposition**: ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"ghos7ie"},"content":"* Manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"ghos7ie"},"content":"* Helps to track the following:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"ghos7ie"},"content":" * Students","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"ghos7ie"},"content":" * Their groups","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"ghos7ie"},"content":" * Group projects’ progress","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"ghos7ie"},"content":" * TA will create Groups and assign tasks","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"ghos7ie"},"content":" * Mark the tasks as the groups complete them","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"ghos7ie"},"content":"| Priority | As a …. | I want to… | So that I can… |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"ghos7ie"},"content":"|----------|------------------------|-----------------------------------------------|---------------------------------------------------|","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | beginner TA | add students into the system | |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | busy TA | remove projects/tasks | not feel overwhelmed |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | TA that prefers typing | carry out all the functions through CLI | just use my keyboard |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"SooYap"},"content":"| `* * *` | disorganized TA | mark a team’s tasks as complete | keep track of my students’ progress |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | disorganized TA | sort students by their groupings | keep track of all the groups under my instruction |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | disorganized TA | remove students no longer taking this module | keep the contact list relevant |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | disorganized TA | search for a student by name or project group | quickly find their contact details |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | disorganized TA | see what I added (groups/projects) before | quickly reference what I added. |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"ghos7ie"},"content":"| `* * *` | highly motivated TA | add students into their projects | |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"ghos7ie"},"content":"| `*` | TA that makes mistakes | edit student particulars | correct my mistakes |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"ghos7ie"},"content":"| `*` | clumsy TA | edit tasks/projects | fix my mistakes |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"ghos7ie"},"content":"(For all use cases below, the **System** is the `T_Assistant` and the **Actor** is the `user`, unless specified","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"ghos7ie"},"content":"otherwise)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"ghos7ie"},"content":"**Use case: List Students**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"-"},"content":"Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"ghos7ie"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"ghos7ie"},"content":"**Use case: Add a Student**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"ghos7ie"},"content":"3. User requests to add a new Student into the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant adds the new Student to the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"-"},"content":"Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Student parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"ghos7ie"},"content":"* 3b. The Student already exits.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"ghos7ie"},"content":" * 3b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"ghos7ie"},"content":"**Use case: Delete a Student**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"ghos7ie"},"content":"3. User requests to delete a Student from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant deletes the Student from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"ghos7ie"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"ghos7ie"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"ghos7ie"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Student parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"ghos7ie"},"content":"**Use case: Add a Group**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list groups.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of groups.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"ghos7ie"},"content":"3. User requests to add a new Group into the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant adds the new Group to the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"ghos7ie"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Group parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"ghos7ie"},"content":"* 3b. The Group already exits.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"ghos7ie"},"content":" * 3b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"ghos7ie"},"content":"* 3c. The Group has hit max limit.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"ghos7ie"},"content":" * 3c1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"ghos7ie"},"content":"* 3d. Student is in another Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"ghos7ie"},"content":" * 3d1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"ghos7ie"},"content":"**Use case: Delete a Group**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list Groups.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of Groups.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"ghos7ie"},"content":"3. User requests to delete a Group from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant deletes the Group from the list.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"ghos7ie"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"ghos7ie"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"ghos7ie"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Group parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"ghos7ie"},"content":"**Use case: Add a Student to a Group**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"ghos7ie"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"ghos7ie"},"content":"1. User requests to list Students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"ghos7ie"},"content":"2. T_Assistant shows a list of Students.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"ghos7ie"},"content":"3. User requests to add a Student to a Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"ghos7ie"},"content":"4. T_Assistant adds the Student to the Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"ghos7ie"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"ghos7ie"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"ghos7ie"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"ghos7ie"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"ghos7ie"},"content":"* 3a. The Student/Group parameters are invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"ghos7ie"},"content":"* 3b. The Student is already in a different Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"SooYap"},"content":" * 3b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"ghos7ie"},"content":"* 3b. The Student is already in a different Group.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"ghos7ie"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"ghos7ie"},"content":"* 3c. The Group has hit max limit.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"ghos7ie"},"content":" * 3c1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"ghos7ie"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":543,"author":{"gitId":"SooYap"},"content":"**Use case: Mark Team\u0027s task as Complete**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":544,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"SooYap"},"content":"1. User marks task as complete.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"SooYap"},"content":"2. T_Assistant marks the task accordingly.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"SooYap"},"content":"* 1a. The Group/Task parameters are invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"SooYap"},"content":"* 1b. The user marks an already complete task.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"SooYap"},"content":" * 1b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"SooYap"},"content":"**Use case: Delete Student from Group**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"SooYap"},"content":"1. User requests to list all students.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"SooYap"},"content":"2. T_Assistant shows all students.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"SooYap"},"content":"3. User deletes a student from a specified group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"SooYap"},"content":"4. T_Assistant adds student to the group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"SooYap"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"SooYap"},"content":"* 3a. The Student/Group parameters are invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":584,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"SooYap"},"content":" * 3a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"SooYap"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":588,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"SooYap"},"content":"* 3b. The Student is already in a different Group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"SooYap"},"content":" * 3b1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"SooYap"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"SooYap"},"content":"**Use case: List all Groups**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":596,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"SooYap"},"content":"1. User lists all groups.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"SooYap"},"content":"2. T_Assistant displays all groups.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":602,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"SooYap"},"content":"* 1a. There are currently no groups.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":607,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":610,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"SooYap"},"content":"**Use case: List all Tasks**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"SooYap"},"content":"1. User lists all tasks.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"SooYap"},"content":"2. T_Assistant displays all groups.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":619,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":620,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":621,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":622,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":623,"author":{"gitId":"SooYap"},"content":"* 1a. There are currently no tasks.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":624,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":625,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":626,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":627,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":628,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":629,"author":{"gitId":"SooYap"},"content":"**Use case: Add Task to Group**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":630,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":631,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":632,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":633,"author":{"gitId":"SooYap"},"content":"1. User adds a task to a specified group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":634,"author":{"gitId":"SooYap"},"content":"2. T_Assistant displays all current tasks for the group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":635,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":636,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":637,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":638,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":639,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":640,"author":{"gitId":"SooYap"},"content":"* 1a. The Group/Task parameters are invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":641,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":642,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":643,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":644,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":645,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":646,"author":{"gitId":"SooYap"},"content":"* 1b. A duplicate task is entered.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":647,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":648,"author":{"gitId":"SooYap"},"content":" * 1b1. T_Assistant informs user that the task already exists.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":649,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":650,"author":{"gitId":"SooYap"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":651,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":652,"author":{"gitId":"SooYap"},"content":"**Use case: Delete Task from Group**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":653,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":654,"author":{"gitId":"SooYap"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":655,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":656,"author":{"gitId":"SooYap"},"content":"1. User removes a task from a specified group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":657,"author":{"gitId":"SooYap"},"content":"2. T_Assistant displays all current tasks for the group.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":658,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":659,"author":{"gitId":"SooYap"},"content":"Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":660,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":661,"author":{"gitId":"SooYap"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":662,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":663,"author":{"gitId":"SooYap"},"content":"* 1a. The Group/Task parameters are invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":664,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":665,"author":{"gitId":"SooYap"},"content":" * 1a1. T_Assistant shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":666,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":667,"author":{"gitId":"SooYap"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":668,"author":{"gitId":"SooYap"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":669,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":670,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":671,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":672,"author":{"gitId":"ghos7ie"},"content":"2. Should be able to hold up to 1000 students without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":673,"author":{"gitId":"ghos7ie"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":674,"author":{"gitId":"ghos7ie"},"content":" able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":675,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":676,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":677,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":678,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":679,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":680,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":681,"author":{"gitId":"SooYap"},"content":"* **Student Number**: Unique identifier for each student","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":682,"author":{"gitId":"SooYap"},"content":"* **Group Name**: Unique identifier for each group","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":683,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":684,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":685,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":686,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":687,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":688,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":689,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":690,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":691,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":692,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":693,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":694,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":695,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":696,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":697,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":698,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":699,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":700,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":701,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":702,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":703,"author":{"gitId":"ghos7ie"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":704,"author":{"gitId":"ghos7ie"},"content":" optimum.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":705,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":706,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":707,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":708,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":709,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":710,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":711,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":712,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":713,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":714,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":715,"author":{"gitId":"ghos7ie"},"content":"### Deleting a student","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":716,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":717,"author":{"gitId":"ghos7ie"},"content":"1. Deleting a student while all students are being shown","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":718,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":719,"author":{"gitId":"ghos7ie"},"content":" 1. Prerequisites: List all students using the `list` command. Multiple students in the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":720,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":721,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":722,"author":{"gitId":"ghos7ie"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":723,"author":{"gitId":"ghos7ie"},"content":" Timestamp in the status bar is updated.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":724,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":725,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":726,"author":{"gitId":"ghos7ie"},"content":" Expected: No student is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":727,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":728,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":729,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":730,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":731,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":732,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":733,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":734,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":735,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":736,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":737,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":738,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":739,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"ghos7ie":285,"SooYap":129,"-":324,"dez2003":1}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"# T_Assistant User Guide","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"dez2003"},"content":"T_Assistant is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, T_Assistant can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":"### Adding a student: `add`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":"Adds a student to the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"ghos7ie"},"content":"**Tip:** A student can have any number of tags (including 0)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":"### Listing all students : `list`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":"Shows a list of all students in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"ghos7ie"},"content":"### Editing a student : `edit`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"ghos7ie"},"content":"Edits an existing student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"ghos7ie"},"content":"* Edits the student at the specified `INDEX`. The index refers to the index number shown in the displayed student list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":"* When editing tags, the existing tags of the student will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"ghos7ie"},"content":"* You can remove all the student’s tags by typing `t/` without","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"ghos7ie"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st student to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"ghos7ie"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd student to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"ghos7ie"},"content":"### Locating students by name: `find`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":"Finds students whose names contain any of the given keywords.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"ghos7ie"},"content":"### Deleting a student : `delete`","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"ghos7ie"},"content":"Deletes the specified student from the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"ghos7ie"},"content":"* Deletes the student at the specified `INDEX`.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"ghos7ie"},"content":"* The index refers to the index number shown in the displayed student list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"ghos7ie"},"content":"* `list` followed by `delete 2` deletes the 2nd student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"ghos7ie"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st student in the results of the `find` command.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"ghos7ie":20,"-":183,"dez2003":2}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"# T_Assistant","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103-F12-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103-F12-2/tp/actions)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"[![codecov](https://codecov.io/gh/nus-cs2103-AY2425S1/tp/graph/badge.svg?token\u003dJA7RQH158C)](https://codecov.io/gh/nus-cs2103-AY2425S1/tp)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"dez2003"},"content":"**T_Assistant is a desktop application for managing your contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"dez2003"},"content":"* If you are interested in using T_Assistant, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"dez2003"},"content":"* If you are interested about developing T_Assistant, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":15,"dez2003":4}},{"path":"src/main/java/seedu/address/commons/core/State.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.commons.core;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":" * Represents which state of display (Student, Group, Task) the GUI is currently in.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":" * Saved in UserPrefs.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"public class State {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":" private static final String DEFAULT \u003d \"Students\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":" private final String state;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":" public State() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" this.state \u003d DEFAULT;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" public State(String state) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" this.state \u003d state;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" public boolean equals(State other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" return this.state.equals(other.state);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":22}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.State;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" ObservableList\u003cStudent\u003e getFilteredPersonList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" /** Returns an unmodifiable view of the filtered list of groups */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" ObservableList\u003cGroup\u003e getFilteredGroupList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" void setStateStudents();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" void setStateGroups();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" State getState();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"SooYap":10,"-":49}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.State;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":" public ObservableList\u003cStudent\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" return model.getFilteredGroupList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":" public void setStateStudents() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":" this.model.setStateStudents();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" public void setStateGroups() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":" this.model.setStateGroups();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":" public State getState() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":" return this.model.getState();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"SooYap":22,"-":86}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The student index provided is invalid\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"YANYAN-w"},"content":" public static final String MESSAGE_STUDENT_NO_NOT_FOUND \u003d \"The student number provided is not found\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ghos7ie"},"content":" * Formats the {@code student} for display to the user.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" public static String format(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" builder.append(student.getName())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"YANYAN-w"},"content":" .append(\"; Student Number:\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"YANYAN-w"},"content":" .append(student.getStudentNumber())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" .append(student.getEmail())","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" student.getTags().forEach(builder::append);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" * Formats the {@code group} for display to the user.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" public static String format(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" builder.append(group.getGroupName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":7,"SooYap":7,"YANYAN-w":3,"-":43}},{"path":"src/main/java/seedu/address/logic/commands/AddGroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP_NAME;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" * Adds a group to the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"public class AddGroupCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" public static final String COMMAND_WORD \u003d \"add_group\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a group to the address book. \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" + PREFIX_GROUP_NAME + \"GROUPNAME \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" + PREFIX_GROUP_NAME + \"Group 1 \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New group added: %1$s\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_DUPLICATE_GROUP \u003d \"This group already exists in the address book\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" private final Group toAdd;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" * Creates an AddGroupCommand to add the specified {@code Group}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" public AddGroupCommand(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" toAdd \u003d group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" if (model.hasGroup(toAdd)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" throw new CommandException(MESSAGE_DUPLICATE_GROUP);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" model.addGroup(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof AddGroupCommand)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" AddGroupCommand otherAddGroupCommand \u003d (AddGroupCommand) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" return toAdd.equals(otherAddGroupCommand.toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":71}},{"path":"src/main/java/seedu/address/logic/commands/AddStudentCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" * Adds a student to the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"dez2003"},"content":" public static final String COMMAND_WORD \u003d \"add_student\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a student to the address book. \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"dez2003"},"content":" + PREFIX_STUDENT_NAME + \"NAME \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"dez2003"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"dez2003"},"content":" + PREFIX_STUDENT_NUMBER + \"STUDENT_NUMBER\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"dez2003"},"content":" + PREFIX_STUDENT_NAME + \"John Doe \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"dez2003"},"content":" + PREFIX_STUDENT_NUMBER + \"A02345678J\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New student added: %1$s\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This student already exists in the address book\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" private final Student toAdd;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"dez2003"},"content":" * Creates an AddStudentCommand to add the specified {@code Student}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":" public AddStudentCommand(Student student) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" toAdd \u003d student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"dez2003"},"content":" if (!(other instanceof AddStudentCommand)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"dez2003"},"content":" AddStudentCommand otherAddCommand \u003d (AddStudentCommand) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":8,"-":59,"dez2003":14}},{"path":"src/main/java/seedu/address/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" private int changeState;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" this.changeState \u003d -1;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" this.changeState \u003d -1;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser}, the change state marker,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" * and other fields set to their default value.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" public CommandResult(String feedbackToUser, int changeState) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" this.changeState \u003d changeState;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" public int getChangeState() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" return changeState;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"SooYap":17,"-":82}},{"path":"src/main/java/seedu/address/logic/commands/DeleteStudentCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"YANYAN-w"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"YANYAN-w"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" * Deletes a student from the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"YANYAN-w"},"content":"public class DeleteStudentCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"YANYAN-w"},"content":" public static final String COMMAND_WORD \u003d \"delete_student\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"YANYAN-w"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"YANYAN-w"},"content":" + \": Deletes the student identified by the student number used.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" + \"Parameters: STUDENT_NUMBER (must be a string starting with \u0027A\u0027, followed by 7 numeric figures, \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" + \"and ended with a capital letter\u0027)\\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"YANYAN-w"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + PREFIX_STUDENT_NUMBER + \" \" + \"A0123456B\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"YANYAN-w"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Student: %1$s\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"YANYAN-w"},"content":" private final StudentNumber targetStudentNo;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"YANYAN-w"},"content":" public DeleteStudentCommand(StudentNumber sno) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"YANYAN-w"},"content":" this.targetStudentNo \u003d sno;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"YANYAN-w"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"YANYAN-w"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"YANYAN-w"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"YANYAN-w"},"content":" List\u003cStudent\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"YANYAN-w"},"content":" boolean hasFoundTarget \u003d false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"YANYAN-w"},"content":" Student studentToBeDeleted \u003d null;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"YANYAN-w"},"content":" for (Student stu : lastShownList) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"YANYAN-w"},"content":" if (stu.getStudentNumber().equals(targetStudentNo)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":" hasFoundTarget \u003d true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"YANYAN-w"},"content":" studentToBeDeleted \u003d stu;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"YANYAN-w"},"content":" break;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"YANYAN-w"},"content":" if (!hasFoundTarget) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"YANYAN-w"},"content":" throw new CommandException(Messages.MESSAGE_STUDENT_NO_NOT_FOUND);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" model.deletePerson(studentToBeDeleted);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(studentToBeDeleted)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"YANYAN-w"},"content":" public StudentNumber getTargetStudentNo() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"YANYAN-w"},"content":" return targetStudentNo;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"YANYAN-w"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"YANYAN-w"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"YANYAN-w"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"YANYAN-w"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"YANYAN-w"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof DeleteStudentCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"YANYAN-w"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand otherDeleteStudentCommand \u003d (DeleteStudentCommand) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"YANYAN-w"},"content":" return targetStudentNo.equals(otherDeleteStudentCommand.targetStudentNo);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"YANYAN-w"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"YANYAN-w"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"YANYAN-w"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"YANYAN-w"},"content":" .add(\"targetStudentNumber\", targetStudentNo)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"YANYAN-w"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"YANYAN-w"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":10,"YANYAN-w":73}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" * Edits the details of an existing student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the student identified \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" + \"by the index number used in the displayed student list. \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"YANYAN-w"},"content":" + \"[\" + PREFIX_STUDENT_NAME + \"NAME] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Student: %1$s\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This student already exists in the address book.\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" * @param index of the student in the filtered student list to edit","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" * @param editPersonDescriptor details to edit the student with","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ghos7ie"},"content":" Student studentToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" Student editedStudent \u003d createEditedPerson(studentToEdit, editPersonDescriptor);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"dez2003"},"content":" System.out.println(\"studentToEdit: \" + studentToEdit);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"dez2003"},"content":" System.out.println(\"editedStudent: \" + editedStudent);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":" if (!studentToEdit.isSamePerson(editedStudent) \u0026\u0026 model.hasPerson(editedStudent)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":" model.setPerson(studentToEdit, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"ghos7ie"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent)));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"ghos7ie"},"content":" * Creates and returns a {@code Student} with the details of {@code studentToEdit}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"ghos7ie"},"content":" private static Student createEditedPerson(Student studentToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" assert studentToEdit !\u003d null;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"ghos7ie"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(studentToEdit.getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(studentToEdit.getEmail());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"ghos7ie"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(studentToEdit.getTags());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber updatedStudentNumber \u003d editPersonDescriptor.getStudentNumber()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"YANYAN-w"},"content":" .orElse(studentToEdit.getStudentNumber());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"dez2003"},"content":" System.out.println(updatedName);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"dez2003"},"content":" System.out.println(updatedEmail);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"dez2003"},"content":" System.out.println(updatedStudentNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"YANYAN-w"},"content":" return new Student(updatedName, updatedEmail, updatedTags, updatedStudentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"ghos7ie"},"content":" * Stores the details to edit the student with. Each non-empty field value will replace the","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"ghos7ie"},"content":" * corresponding field value of the student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"YANYAN-w"},"content":" private StudentNumber studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"ghos7ie"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"dez2003"},"content":" setStudentNumber(toCopy.studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"ghos7ie"},"content":" return CollectionUtil.isAnyNonNull(name, email, tags);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"YANYAN-w"},"content":" public void setStudentNumber(StudentNumber studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"YANYAN-w"},"content":" this.studentNumber \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"dez2003"},"content":" public Optional\u003cStudentNumber\u003e getStudentNumber() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"dez2003"},"content":" return Optional.ofNullable(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"dez2003"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"dez2003"},"content":" \u0026\u0026 Objects.equals(studentNumber, otherEditPersonDescriptor.studentNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"dez2003"},"content":" .add(\"student number\", studentNumber)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"ghos7ie":27,"YANYAN-w":8,"-":182,"dez2003":12}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Finds and lists all persons in address book whose name contains any of the argument keywords.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose names contain any of \"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":57}},{"path":"src/main/java/seedu/address/logic/commands/ListGroupCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_GROUPS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":" * Adds a group to the address book.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"public class ListGroupCommand extends Command {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" public static final String COMMAND_WORD \u003d \"list_groups\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" public static final int LIST_GROUP_MARKER \u003d 1;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Lists all groups. \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all groups\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" * Creates an ListGroupCommand to add the specified {@code Group}","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" public ListGroupCommand() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" model.updateFilteredGroupList(PREDICATE_SHOW_ALL_GROUPS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" model.setStateGroups();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" return new CommandResult(MESSAGE_SUCCESS, LIST_GROUP_MARKER);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" .toString();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"SooYap":42}},{"path":"src/main/java/seedu/address/logic/commands/ListStudentCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":" * Adds a group to the address book.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"public class ListStudentCommand extends Command {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" public static final String COMMAND_WORD \u003d \"list_students\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" public static final int LIST_STUDENT_MARKER \u003d 0;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Lists all students. \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all students\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" * Creates an ListStudentCommand to add the specified {@code Group}","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" public ListStudentCommand() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" model.setStateStudents();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" return new CommandResult(MESSAGE_SUCCESS, LIST_STUDENT_MARKER);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" .toString();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"SooYap":42}},{"path":"src/main/java/seedu/address/logic/parser/AddGroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GROUP_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.AddGroupCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"public class AddGroupCommandParser implements Parser\u003cAddGroupCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" public AddGroupCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_GROUP_NAME);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_GROUP_NAME)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_GROUP_NAME);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" GroupName groupName \u003d ParserUtil.parseGroupName(argMultimap.getValue(PREFIX_GROUP_NAME).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" Group group \u003d new Group(groupName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" return new AddGroupCommand(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":48}},{"path":"src/main/java/seedu/address/logic/parser/AddStudentCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"dez2003"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"dez2003"},"content":" * Parses input arguments and creates a new AddStudentCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommandParser implements Parser\u003cAddStudentCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"dez2003"},"content":" * Parses the given {@code String} of arguments in the context of the AddStudentCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"dez2003"},"content":" * and returns an AddStudentCommand object for execution.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"dez2003"},"content":" public AddStudentCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"dez2003"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_TAG, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"dez2003"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_STUDENT_NUMBER)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"dez2003"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"dez2003"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_STUDENT_NAME).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" StudentNumber studentNumber \u003d ParserUtil.parseStudentNumber(argMultimap.getValue(PREFIX_STUDENT_NUMBER).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":" Student student \u003d new Student(name, email, tagList, studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"dez2003"},"content":" return new AddStudentCommand(student);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"-":38,"dez2003":17}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.AddGroupCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.DeleteStudentCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.ListGroupCommand;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.ListStudentCommand;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"dez2003"},"content":" case AddStudentCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"dez2003"},"content":" return new AddStudentCommandParser().parse(arguments);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" case DeleteStudentCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" return new DeleteStudentCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" case AddGroupCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" return new AddGroupCommandParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":" case ListStudentCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" return new ListStudentCommandParser().parse(arguments);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":" case ListGroupCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" return new ListGroupCommandParser().parse(arguments);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"SooYap":15,"-":76,"dez2003":3}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"dez2003"},"content":" public static final Prefix PREFIX_STUDENT_NAME \u003d new Prefix(\"sn/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" public static final Prefix PREFIX_GROUP_NAME \u003d new Prefix(\"gn/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"YANYAN-w"},"content":" public static final Prefix PREFIX_STUDENT_NUMBER \u003d new Prefix(\"sno/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"SooYap":1,"YANYAN-w":1,"-":13,"dez2003":1}},{"path":"src/main/java/seedu/address/logic/parser/DeleteStudentCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"YANYAN-w"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.commands.DeleteStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"YANYAN-w"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"YANYAN-w"},"content":" * Parses input arguments and creates a new DeleteStudentCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"YANYAN-w"},"content":"public class DeleteStudentCommandParser implements Parser\u003cDeleteStudentCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"YANYAN-w"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"YANYAN-w"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteStudentCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"YANYAN-w"},"content":" * and returns a DeleteStudentCommand object for execution.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"YANYAN-w"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"YANYAN-w"},"content":" public DeleteStudentCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_STUDENT_NUMBER)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" StudentNumber studentNumber \u003d ParserUtil.parseStudentNumber(argMultimap.getValue(PREFIX_STUDENT_NUMBER).get());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"YANYAN-w"},"content":" return new DeleteStudentCommand(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":20,"YANYAN-w":24}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"dez2003"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_TAG, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_STUDENT_NUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"YANYAN-w"},"content":" if (argMultimap.getValue(PREFIX_STUDENT_NAME).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"dez2003"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_STUDENT_NAME).get()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"YANYAN-w"},"content":" if (argMultimap.getValue(PREFIX_STUDENT_NUMBER).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" editPersonDescriptor.setStudentNumber(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" ParserUtil.parseStudentNumber(argMultimap.getValue(PREFIX_STUDENT_NUMBER).get()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"dez2003"},"content":" if (argMultimap.getValue(PREFIX_STUDENT_NUMBER).isPresent()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"dez2003"},"content":" editPersonDescriptor.setStudentNumber(ParserUtil.parseStudentNumber(argMultimap","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"dez2003"},"content":" .getValue(PREFIX_STUDENT_NUMBER).get()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"SooYap":2,"YANYAN-w":2,"-":73,"dez2003":9}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":32}},{"path":"src/main/java/seedu/address/logic/parser/ListGroupCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.ListGroupCommand;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.ListStudentCommand;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":" * Parses input arguments and creates a new ListStudentCommand object","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"public class ListGroupCommandParser implements Parser\u003cListGroupCommand\u003e {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" * and returns an ListStudentCommand object for execution.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" public ListGroupCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" if (!args.trim().equals(\"\")) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListGroupCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" return new ListGroupCommand();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"SooYap":27}},{"path":"src/main/java/seedu/address/logic/parser/ListStudentCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.ListStudentCommand;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":" * Parses input arguments and creates a new ListStudentCommand object","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"public class ListStudentCommandParser implements Parser\u003cListStudentCommand\u003e {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * and returns an ListStudentCommand object for execution.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" public ListStudentCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" if (!args.trim().equals(\"\")) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" return new ListStudentCommand();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"SooYap":26}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"YANYAN-w"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"YANYAN-w"},"content":" * Parses a {@code String student number} into a {@code StudentNumber}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"YANYAN-w"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"YANYAN-w"},"content":" * @throws ParseException if the given {@code studentNumber} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" public static StudentNumber parseStudentNumber(String studentNumber) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" requireNonNull(studentNumber);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" String trimmedNumber \u003d studentNumber.trim();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"YANYAN-w"},"content":" if (!StudentNumber.isValidStudentNumber(trimmedNumber)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"YANYAN-w"},"content":" throw new ParseException(StudentNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" return new StudentNumber(studentNumber);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"SooYap"},"content":" * Parses a {@code String name} into a {@code GroupName}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SooYap"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" public static GroupName parseGroupName(String groupName) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" requireNonNull(groupName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" String trimmedName \u003d groupName.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":" if (!GroupName.isValidName(trimmedName)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":" throw new ParseException(GroupName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" return new GroupName(trimmedName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"SooYap":21,"YANYAN-w":11,"-":90}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.UniqueGroupList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.UniqueStudentList;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" private final UniqueStudentList students;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private final UniqueGroupList groups;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":" students \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" groups \u003d new UniqueGroupList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public AddressBook() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ghos7ie"},"content":" * Replaces the contents of the student list with {@code students}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" * {@code students} must not contain duplicate students.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" public void setStudents(List\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" this.students.setPersons(students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" * Replaces the contents of the student list with {@code groups}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" * {@code groups} must not contain duplicate students.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" public void setGroups(List\u003cGroup\u003e groups) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" this.groups.setGroups(groups);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" setStudents(newData.getStudentList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" setGroups(newData.getGroupList());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" //// student-level operations","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ghos7ie"},"content":" * Returns true if a student with the same identity as {@code student} exists in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"ghos7ie"},"content":" public boolean hasStudent(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" return students.contains(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"ghos7ie"},"content":" * Adds a student to the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"ghos7ie"},"content":" * The student must not already exist in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"ghos7ie"},"content":" public void addStudent(Student p) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":" students.add(p);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":" * Replaces the given student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the address","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"ghos7ie"},"content":" * book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"ghos7ie"},"content":" public void setStudent(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"ghos7ie"},"content":" students.setPerson(target, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" public void removeStudent(Student key) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"ghos7ie"},"content":" students.remove(key);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":" * Returns true if a group with the same identity as {@code group} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" return groups.contains(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" * Adds a group to the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" * The group must not already exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group p) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SooYap"},"content":" groups.add(p);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SooYap"},"content":" * Replaces the given student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SooYap"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"SooYap"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the address","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"SooYap"},"content":" * book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"SooYap"},"content":" requireNonNull(editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"SooYap"},"content":" groups.setGroup(target, editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"ghos7ie"},"content":" .add(\"students\", students)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cStudent\u003e getStudentList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"ghos7ie"},"content":" return students.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getGroupList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"SooYap"},"content":" return groups.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"ghos7ie"},"content":" return students.equals(otherAddressBook.students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"ghos7ie"},"content":" return students.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":31,"SooYap":40,"-":107}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.State;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":" * {@code Predicate} that always evaluate to true","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":" Predicate\u003cStudent\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" Predicate\u003cGroup\u003e PREDICATE_SHOW_ALL_GROUPS \u003d unused -\u003e true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":" * Returns the AddressBook","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"ghos7ie"},"content":" * Returns true if a student with the same identity as {@code student} exists in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"ghos7ie"},"content":" boolean hasPerson(Student student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"ghos7ie"},"content":" * Deletes the given student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"ghos7ie"},"content":" * The student must exist in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ghos7ie"},"content":" void deletePerson(Student target);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" * Adds the given student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"ghos7ie"},"content":" * {@code student} must not already exist in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ghos7ie"},"content":" void addPerson(Student student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":" * Replaces the given student {@code target} with {@code editedStudent}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":" * The student identity of {@code editedStudent} must not","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"ghos7ie"},"content":" * be the same as another existing student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"ghos7ie"},"content":" void setPerson(Student target, Student editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":" * Returns true if a group with the same identity as {@code group} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" boolean hasGroup(Group group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":" * Adds the given group.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" * {@code group} must not already exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" void addGroup(Group group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" * Replaces the given group {@code target} with {@code editedGroup}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" * The group identity of {@code editedStudent} must not","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" * be the same as another existing group in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" void setGroup(Group target, Group editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"ghos7ie"},"content":" * Returns an unmodifiable view of the filtered student list","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"ghos7ie"},"content":" ObservableList\u003cStudent\u003e getFilteredPersonList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":" * Returns an unmodifiable view of the filtered student list","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":" ObservableList\u003cGroup\u003e getFilteredGroupList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"ghos7ie"},"content":" * Updates the filter of the filtered student list to filter by the given {@code predicate}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"ghos7ie"},"content":" void updateFilteredPersonList(Predicate\u003cStudent\u003e predicate);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":" void updateFilteredGroupList(Predicate\u003cGroup\u003e predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SooYap"},"content":" void setStateStudents();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SooYap"},"content":" void setStateGroups();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SooYap"},"content":" State getState();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"ghos7ie":27,"SooYap":31,"-":72}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.State;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" private final FilteredList\u003cStudent\u003e filteredStudents;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" private final FilteredList\u003cGroup\u003e filteredGroups;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" filteredStudents \u003d new FilteredList\u003c\u003e(this.addressBook.getStudentList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" filteredGroups \u003d new FilteredList\u003c\u003e(this.addressBook.getGroupList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" public void setStateStudents() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" this.userPrefs.setStateStudents();;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" public void setStateGroups() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" this.userPrefs.setStateGroups();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" public State getState() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" return this.userPrefs.getState();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"ghos7ie"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"ghos7ie"},"content":" return addressBook.hasStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"ghos7ie"},"content":" public void deletePerson(Student target) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":" addressBook.removeStudent(target);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"ghos7ie"},"content":" public void addPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"ghos7ie"},"content":" public void setPerson(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"ghos7ie"},"content":" requireAllNonNull(target, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"ghos7ie"},"content":" addressBook.setStudent(target, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"SooYap"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"SooYap"},"content":" return addressBook.hasGroup(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"SooYap"},"content":" addressBook.addGroup(group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"SooYap"},"content":" updateFilteredGroupList(PREDICATE_SHOW_ALL_GROUPS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group editedGroup) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(target, editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SooYap"},"content":" addressBook.setGroup(target, editedGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"SooYap"},"content":" updateFilteredGroupList(PREDICATE_SHOW_ALL_GROUPS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"ghos7ie"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Student List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"ghos7ie"},"content":" * Returns an unmodifiable view of the list of {@code Student} backed by the internal list of","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"ghos7ie"},"content":" public ObservableList\u003cStudent\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"ghos7ie"},"content":" return filteredStudents;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"SooYap"},"content":" return filteredGroups;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"ghos7ie"},"content":" public void updateFilteredPersonList(Predicate\u003cStudent\u003e predicate) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"ghos7ie"},"content":" filteredStudents.setPredicate(predicate);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"SooYap"},"content":" public void updateFilteredGroupList(Predicate\u003cGroup\u003e predicate) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"SooYap"},"content":" filteredGroups.setPredicate(predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 filteredStudents.equals(otherModelManager.filteredStudents)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 filteredGroups.equals(otherModelManager.filteredGroups);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":19,"SooYap":50,"-":133}},{"path":"src/main/java/seedu/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of an address book","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the persons list.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * This list will not contain any duplicate persons.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" ObservableList\u003cStudent\u003e getStudentList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" ObservableList\u003cGroup\u003e getGroupList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"SooYap":3,"-":15}},{"path":"src/main/java/seedu/address/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.State;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" State getState();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27","isFullCredit":false}],"authorContributionMap":{"SooYap":3,"-":16}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.State;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" private static final State DEFAULT_STATE \u003d new State(\"Students\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" private static final State GROUP_STATE \u003d new State(\"Groups\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" private State guiState \u003d GROUP_STATE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" * Sets the state of the system to \"Students\".","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" public void setStateStudents() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" this.guiState \u003d DEFAULT_STATE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" * Sets the state of the system to \"Groups\".","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" public void setStateGroups() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" this.guiState \u003d GROUP_STATE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" public State getState() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" return this.guiState;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" this.guiState \u003d newUserPrefs.getState();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"SooYap":23,"-":87}},{"path":"src/main/java/seedu/address/model/group/Group.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" * Represents a Group in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"public class Group {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" private static final int MAXIMUM_STUDENTS_IN_GROUP \u003d 5;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private final GroupName groupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" private final Set\u003cStudent\u003e students \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" public Group(GroupName groupName, Set\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(groupName, students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" this.students.addAll(students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" public Group(GroupName groupName) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(groupName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" public GroupName getGroupName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" return this.groupName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" public Set\u003cStudent\u003e getStudents() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" return Collections.unmodifiableSet(students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" * Adds a given student into the {@code group} object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" * There can be a maximum of 5 students in each group.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" * @param student The {@code student} object to be added.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" public void add(Student student) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" if (students.size() \u003c MAXIMUM_STUDENTS_IN_GROUP) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" students.add(student);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" * Returns true if both groups have the same name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" public boolean isSameGroup(Group otherGroup) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" if (otherGroup \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" return otherGroup !\u003d null","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 otherGroup.getGroupName().equals(getGroupName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":" * Returns true if both group have the same identity and data fields.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"SooYap"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof Group)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":" Group otherStudent \u003d (Group) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" return groupName.equals(otherStudent.groupName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 students.equals(otherStudent.students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" return Objects.hash(groupName, students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" .add(\"groupname\", groupName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":" .add(\"students\", students)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":106}},{"path":"src/main/java/seedu/address/model/group/GroupName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":" * Represents a Group name in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"public class GroupName {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":" \"Group Names should only contain alphanumeric characters and spaces, and it should not be blank.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" public final String fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" * @param name A valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" public GroupName(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" fullName \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" return fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof seedu.address.model.group.GroupName)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" seedu.address.model.group.GroupName otherName \u003d (seedu.address.model.group.GroupName) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" return fullName.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"SooYap":66}},{"path":"src/main/java/seedu/address/model/group/UniqueGroupList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" * A student is considered unique by comparing using {@code Student#isSamePerson(Student)}. As such, adding and","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" * updating of","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" * persons uses Student#isSamePerson(Student) for equality so as to ensure that the student being added or updated is","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" * unique in terms of identity in the UniqueStudentList. However, the removal of a student uses Student#equals","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" * (Object) so as to ensure that the student with exactly the same fields will be removed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" * @see Group#isSameGroup(Group)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"public class UniqueGroupList implements Iterable\u003cGroup\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" private final ObservableList\u003cGroup\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" private final ObservableList\u003cGroup\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" * Returns true if the list contains an equivalent student as the given argument.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" public boolean contains(Group toCheck) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" return internalList.stream().anyMatch(toCheck::isSameGroup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" * Adds a group to the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" * The group must not already exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" public void add(Group toAdd) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" * Replaces the student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group editedStudent) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(target, editedStudent);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" if (target.isSameGroup(editedStudent) \u0026\u0026 contains(editedStudent)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" internalList.set(index, editedStudent);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" * Removes the equivalent student from the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":" * The student must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" public void remove(Group toRemove) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" public void setGroups(UniqueGroupList replacement) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" * Replaces the contents of this list with {@code groups}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" * {@code students} must not contain duplicate groups.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":" public void setGroups(List\u003cGroup\u003e students) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":" requireAllNonNull(students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" if (!groupsAreUnique(students)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":" internalList.setAll(students);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":" public Iterator\u003cGroup\u003e iterator() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"SooYap"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" if (!(other instanceof UniqueGroupList)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" UniqueGroupList otherUniqueGroupList \u003d (UniqueGroupList) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SooYap"},"content":" return internalList.equals(otherUniqueGroupList.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SooYap"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SooYap"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"SooYap"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"SooYap"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"SooYap"},"content":" * Returns true if {@code groups} contains only unique groups.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"SooYap"},"content":" private boolean groupsAreUnique(List\u003cGroup\u003e groups) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"SooYap"},"content":" for (int i \u003d 0; i \u003c groups.size() - 1; i++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"SooYap"},"content":" for (int j \u003d i + 1; j \u003c groups.size(); j++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"SooYap"},"content":" if (groups.get(i).isSameGroup(groups.get(j))) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"SooYap"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"SooYap"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":151}},{"path":"src/main/java/seedu/address/model/student/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":" * Represents a Student\u0027s email in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":77}},{"path":"src/main/java/seedu/address/model/student/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":" * Represents a Student\u0027s name in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":64}},{"path":"src/main/java/seedu/address/model/student/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":" * Tests that a {@code Student}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cStudent\u003e {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" public boolean test(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(student.getName().fullName, keyword));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":5,"-":39}},{"path":"src/main/java/seedu/address/model/student/Student.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":" * Represents a Student in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"public class Student {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"dez2003"},"content":" private final StudentNumber studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" private final Optional\u003cString\u003e group;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"YANYAN-w"},"content":" public Student(Name name, Email email, Set\u003cTag\u003e tags, StudentNumber studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"YANYAN-w"},"content":" requireAllNonNull(name, email, tags, studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" this.studentNumber \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" this.group \u003d Optional.empty();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":" public Student(Name name, Email email, Set\u003cTag\u003e tags, StudentNumber studentNumber, Optional\u003cString\u003e group) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"YANYAN-w"},"content":" requireAllNonNull(name, email, tags, studentNumber, group);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" this.group \u003d group;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"YANYAN-w"},"content":" this.studentNumber \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"dez2003"},"content":" public StudentNumber getStudentNumber() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" return studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" public Optional\u003cString\u003e getGroup() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" return group;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":" public boolean isSamePerson(Student otherStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"ghos7ie"},"content":" if (otherStudent \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":" return otherStudent !\u003d null","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"YANYAN-w"},"content":" \u0026\u0026 otherStudent.getStudentNumber().equals(getStudentNumber())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" \u0026\u0026 otherStudent.getName().toString().toLowerCase().equals(getName().toString().toLowerCase());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"ghos7ie"},"content":" if (!(other instanceof Student)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" Student otherStudent \u003d (Student) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"ghos7ie"},"content":" return name.equals(otherStudent.name)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"ghos7ie"},"content":" \u0026\u0026 email.equals(otherStudent.email)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"YANYAN-w"},"content":" \u0026\u0026 tags.equals(otherStudent.tags)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"YANYAN-w"},"content":" \u0026\u0026 studentNumber.equals(otherStudent.studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"YANYAN-w"},"content":" return Objects.hash(name, email, studentNumber, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"dez2003"},"content":" .add(\"student number\", studentNumber)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":" .add(\"group\", group.orElse(\"\"))","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":10,"SooYap":23,"YANYAN-w":9,"-":83,"dez2003":7}},{"path":"src/main/java/seedu/address/model/student/StudentNumber.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"dez2003"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"dez2003"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"dez2003"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":" * Represents a Student\u0027s student number in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"dez2003"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidStudentNumber(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"dez2003"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"dez2003"},"content":"public class StudentNumber {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"dez2003"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"dez2003"},"content":" \"Student numbers should be of the format A01234567X\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"dez2003"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"dez2003"},"content":" + \"1. The student number should start with A0.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"dez2003"},"content":" + \"2. This is followed by exactly 7 numerical digits.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"dez2003"},"content":" + \"3. Lastly, it ends with another letter, which could be A or any other uppercase letter.\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"dez2003"},"content":" private static final String START_PART_REGEX \u003d \"^A0\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" private static final String DIGIT_PART_REGEX \u003d \"\\\\d{6}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"dez2003"},"content":" private static final String END_PART_REGEX \u003d \"[A-Z]$\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"dez2003"},"content":" public static final String VALIDATION_REGEX \u003d START_PART_REGEX + DIGIT_PART_REGEX + END_PART_REGEX;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"dez2003"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"dez2003"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"dez2003"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"dez2003"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"dez2003"},"content":" * @param studentNumber A valid student number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"dez2003"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"dez2003"},"content":" public StudentNumber(String studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":" requireNonNull(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"dez2003"},"content":" checkArgument(isValidStudentNumber(studentNumber), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"dez2003"},"content":" value \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"dez2003"},"content":" * Returns if a given string is a valid student number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"dez2003"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"dez2003"},"content":" public static boolean isValidStudentNumber(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"dez2003"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"dez2003"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"dez2003"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"dez2003"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"dez2003"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"dez2003"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"dez2003"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"dez2003"},"content":" if (!(other instanceof StudentNumber)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"dez2003"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"dez2003"},"content":" StudentNumber otherStudentNumber \u003d (StudentNumber) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"dez2003"},"content":" return value.equals(otherStudentNumber.value);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"dez2003"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"dez2003"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"dez2003"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"dez2003"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"dez2003"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":1,"dez2003":67}},{"path":"src/main/java/seedu/address/model/student/UniqueStudentList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" * A student is considered unique by comparing using {@code Student#isSamePerson(Student)}. As such, adding and","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":" * updating of","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" * persons uses Student#isSamePerson(Student) for equality so as to ensure that the student being added or updated is","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":" * unique in terms of identity in the UniqueStudentList. However, the removal of a student uses Student#equals","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" * (Object) so as to ensure that the student with exactly the same fields will be removed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" * \u003cp\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" * @see Student#isSamePerson(Student)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":"public class UniqueStudentList implements Iterable\u003cStudent\u003e {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":" private final ObservableList\u003cStudent\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" private final ObservableList\u003cStudent\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ghos7ie"},"content":" * Returns true if the list contains an equivalent student as the given argument.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public boolean contains(Student toCheck) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" * Adds a student to the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ghos7ie"},"content":" * The student must not already exist in the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" public void add(Student toAdd) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" * Replaces the student {@code target} in the list with {@code editedStudent}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ghos7ie"},"content":" * The student identity of {@code editedStudent} must not be the same as another existing student in the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" public void setPerson(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":" requireAllNonNull(target, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"ghos7ie"},"content":" if (!target.isSamePerson(editedStudent) \u0026\u0026 contains(editedStudent)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"ghos7ie"},"content":" internalList.set(index, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ghos7ie"},"content":" * Removes the equivalent student from the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" * The student must exist in the list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ghos7ie"},"content":" public void remove(Student toRemove) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"ghos7ie"},"content":" public void setPersons(UniqueStudentList replacement) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":" * Replaces the contents of this list with {@code students}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"ghos7ie"},"content":" * {@code students} must not contain duplicate students.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" public void setPersons(List\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":" requireAllNonNull(students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"ghos7ie"},"content":" if (!personsAreUnique(students)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"ghos7ie"},"content":" internalList.setAll(students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"ghos7ie"},"content":" public ObservableList\u003cStudent\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"ghos7ie"},"content":" public Iterator\u003cStudent\u003e iterator() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"ghos7ie"},"content":" if (!(other instanceof UniqueStudentList)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList otherUniqueStudentList \u003d (UniqueStudentList) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"ghos7ie"},"content":" return internalList.equals(otherUniqueStudentList.internalList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"ghos7ie"},"content":" * Returns true if {@code students} contains only unique students.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"ghos7ie"},"content":" private boolean personsAreUnique(List\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"ghos7ie"},"content":" for (int i \u003d 0; i \u003c students.size() - 1; i++) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"ghos7ie"},"content":" for (int j \u003d i + 1; j \u003c students.size(); j++) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"ghos7ie"},"content":" if (students.get(i).isSamePerson(students.get(j))) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":44,"-":107}},{"path":"src/main/java/seedu/address/model/student/exceptions/DuplicatePersonException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student.exceptions;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Signals that the operation will result in duplicate Persons (Persons are considered duplicates if they have the same","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" * identity).","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"public class DuplicatePersonException extends RuntimeException {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" public DuplicatePersonException() {","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":10}},{"path":"src/main/java/seedu/address/model/student/exceptions/PersonNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student.exceptions;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"ghos7ie"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":" * Signals that the operation is unable to find the specified student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ghos7ie"},"content":"public class PersonNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"ghos7ie":6}},{"path":"src/main/java/seedu/address/model/task/Deadline.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"ghos7ie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ghos7ie"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":"import java.time.format.ResolverStyle;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":" * Represents a Deadline for a Task.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"public class Deadline implements Comparable\u003cDeadline\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2} \\\\d{2}:\\\\d{2}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" // safer to use \u0027uuuu\u0027 vs \u0027yyyy\u0027","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":" // https://stackoverflow.com/questions/","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" // 41177442/uuuu-versus-yyyy-in-datetimeformatter-formatting-pattern-codes-in-java","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":" private static final String DATETIME_FORMAT \u003d \"uuuu-MM-dd HH:mm\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" private static final String DATETIME_OUTPUT_FORMAT \u003d \"d MMM uuuu HH:mm\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" private static final DateTimeFormatter DATETIME_FORMATTER \u003d DateTimeFormatter","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":" .ofPattern(DATETIME_FORMAT)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":" .withResolverStyle(ResolverStyle.STRICT);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":" public final LocalDateTime time;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" * Constructs a {@code Deadline}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":" * @param time A valid LocalDateTime.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ghos7ie"},"content":" public Deadline(LocalDateTime time) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(time);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" this.time \u003d time;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" * Returns true if a given string is a valid deadline.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" public static boolean isValidDeadline(String test) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ghos7ie"},"content":" if (!test.matches(VALIDATION_REGEX)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" // can add another check to see if deadline is after current date","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ghos7ie"},"content":" try {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" LocalDateTime.parse(test, DATETIME_FORMATTER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"ghos7ie"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ghos7ie"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ghos7ie"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" return time.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"ghos7ie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"ghos7ie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"ghos7ie"},"content":" if (!(other instanceof Deadline otherDeadline)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ghos7ie"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"ghos7ie"},"content":" return time.equals(otherDeadline.time);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" public int compareTo(Deadline o) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"ghos7ie"},"content":" return time.compareTo(o.time);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"ghos7ie"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":" return time.format(DateTimeFormatter.ofPattern(DATETIME_OUTPUT_FORMAT));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":82}},{"path":"src/main/java/seedu/address/model/task/Status.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"ghos7ie"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":" * Enum class representing the status of a Task.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":" * {@code MISSED}: Task was not completed on time","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":"public enum Status {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":" PENDING,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":" COMPLETED;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":" * Returns true if a given string is a valid Status.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":" public static boolean isValidStatus(String status) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":" try {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" Status.valueOf(status.toUpperCase());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":22}},{"path":"src/main/java/seedu/address/model/task/Task.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"ghos7ie"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":" * Represents a Task that can be assigned to a Group.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"public class Task {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":" //","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":" private final TaskName name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":" private final Deadline deadline;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":" private final Status status;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" public Task(TaskName name, Deadline deadline) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":" this.status \u003d Status.PENDING;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":" public TaskName getTaskName() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" return name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":" public Deadline getDeadline() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":" return deadline;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" public Status getStatus() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" return status;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" * Returns true if both Tasks have the same name and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"ghos7ie"},"content":" * This defines a weaker notion of equality between two tasks.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ghos7ie"},"content":" public boolean isSameTask(Task otherTask) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" if (otherTask \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" return otherTask !\u003d null","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"ghos7ie"},"content":" \u0026\u0026 otherTask.getTaskName().toString().equalsIgnoreCase(getTaskName().toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ghos7ie"},"content":" \u0026\u0026 otherTask.getDeadline().equals(getDeadline())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" \u0026\u0026 otherTask.getStatus() \u003d\u003d getStatus();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" * Returns true if both Tasks have the same name and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ghos7ie"},"content":" * This defines a stronger notion of equality between two tasks.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"ghos7ie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"ghos7ie"},"content":" if (!(other instanceof Task otherTask)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"ghos7ie"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ghos7ie"},"content":" return name.equals(otherTask.getTaskName())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"ghos7ie"},"content":" \u0026\u0026 deadline.equals(otherTask.getDeadline())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"ghos7ie"},"content":" \u0026\u0026 status.equals(otherTask.getStatus());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ghos7ie"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" return Objects.hash(name, deadline, status);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"ghos7ie"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" .add(\"deadline\", deadline)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":" .add(\"status\", status)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"ghos7ie"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"ghos7ie"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":85}},{"path":"src/main/java/seedu/address/model/task/TaskName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.task;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"ghos7ie"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ghos7ie"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":" * Represents a Task name in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"public class TaskName {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":" public static final String NAME_CONSTRAINT \u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":" \"Task Name cannot be blank.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\\\\\S\\\\\\\\s]+[\\\\\\\\S]+\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" public final String taskName;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":" * Constructs a {@code TaskName}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" * @param name A valid task name.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":" public TaskName(String name) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ghos7ie"},"content":" checkArgument(isValidName(name), NAME_CONSTRAINT);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":" taskName \u003d name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":" * Returns true if a given string is a valid task name.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ghos7ie"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ghos7ie"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" return taskName;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ghos7ie"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"ghos7ie"},"content":" if (!(other instanceof TaskName otherName)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ghos7ie"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" return taskName.equals(otherName.taskName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ghos7ie"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" return taskName.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":58}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"dez2003"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":" public static Student[] getSamplePersons() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" return new Student[]{","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Alex Yeoh\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" getTagSet(\"friends\"), new StudentNumber(\"A0737935G\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Bernice Yu\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" getTagSet(\"colleagues\", \"friends\"), new StudentNumber(\"A0597991H\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Charlotte Oliveiro\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" getTagSet(\"neighbours\"), new StudentNumber(\"A0632228J\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"David Li\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" getTagSet(\"family\"), new StudentNumber(\"A0965321G\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Irfan Ibrahim\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" getTagSet(\"classmates\"), new StudentNumber(\"A0467953H\")),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":" new Student(new Name(\"Roy Balakrishnan\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" getTagSet(\"colleagues\"), new StudentNumber(\"A0122764H\"))","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" for (Student sampleStudent : getSamplePersons()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" sampleAb.addStudent(sampleStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"ghos7ie":13,"SooYap":6,"-":33,"dez2003":1}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedGroup.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" * Jackson-friendly version of {@link Group}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"class JsonAdaptedGroup {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Group\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" private final String groupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" private final List\u003cJsonAdaptedPerson\u003e students \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" * Constructs a {@code JsonAdaptedGroup} with the given student details.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" @JsonCreator","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" public JsonAdaptedGroup(@JsonProperty(\"groupname\") String groupName,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" @JsonProperty(\"students\") List\u003cJsonAdaptedPerson\u003e students) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" this.groupName \u003d groupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" if (students !\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" this.students.addAll(students);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" * Converts a given {@code Group} into this class for Jackson use.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" public JsonAdaptedGroup(Group source) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" groupName \u003d source.getGroupName().fullName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" students.addAll(source.getStudents().stream()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" .map(JsonAdaptedPerson::new)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" * Converts this Jackson-friendly adapted student object into the model\u0027s {@code Group} object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted student.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" public Group toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" final List\u003cStudent\u003e allStudents \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" for (JsonAdaptedPerson student : this.students) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" allStudents.add(student.toModelType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" if (groupName \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" GroupName.class.getSimpleName()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" if (!GroupName.isValidName(groupName)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" throw new IllegalValueException(GroupName.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" final GroupName modelGroupName \u003d new GroupName(groupName);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" final Set\u003cStudent\u003e modelStudents \u003d new HashSet\u003c\u003e(allStudents);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" return new Group(modelGroupName, modelStudents);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":73}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" * Jackson-friendly version of {@link Student}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Student\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"YANYAN-w"},"content":" private final String studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given student details.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"YANYAN-w"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"dez2003"},"content":" @JsonProperty(\"student number\") String studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":" this.studentNumber \u003d studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"ghos7ie"},"content":" * Converts a given {@code Student} into this class for Jackson use.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" public JsonAdaptedPerson(Student source) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"YANYAN-w"},"content":" studentNumber \u003d source.getStudentNumber().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" * Converts this Jackson-friendly adapted student object into the model\u0027s {@code Student} object.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"ghos7ie"},"content":" public Student toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"YANYAN-w"},"content":" if (studentNumber \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"dez2003"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"dez2003"},"content":" StudentNumber.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"YANYAN-w"},"content":" if (!StudentNumber.isValidStudentNumber(studentNumber)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"dez2003"},"content":" throw new IllegalValueException(StudentNumber.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"YANYAN-w"},"content":" final StudentNumber modelStudentNumber \u003d new StudentNumber(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"YANYAN-w"},"content":" return new Student(modelName, modelEmail, modelTags, modelStudentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":13,"YANYAN-w":9,"-":72,"dez2003":4}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Students list contains duplicate student(s).\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" public static final String MESSAGE_DUPLICATE_GROUP \u003d \"Groups list contains duplicate groups(s).\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" private final List\u003cJsonAdaptedGroup\u003e groups \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" @JsonProperty(\"groups\") List\u003cJsonAdaptedGroup\u003e groups) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" this.groups.addAll(groups);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" persons.addAll(source.getStudentList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" groups.addAll(source.getGroupList().stream().map(JsonAdaptedGroup::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":" if (addressBook.hasStudent(student)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" for (JsonAdaptedGroup jsonAdaptedGroup : groups) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" Group group \u003d jsonAdaptedGroup.toModelType();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" if (addressBook.hasGroup(group)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_GROUP);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" addressBook.addGroup(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"SooYap":17,"-":54}},{"path":"src/main/java/seedu/address/ui/GroupCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * An UI component that displays information of a {@code Student}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"public class GroupCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" private static final String FXML \u003d \"GroupListCard.fxml\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" public final Group group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" private HBox cardPane;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" private Label name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" private Label id;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" private VBox students;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" * Creates a {@code GroupCode} with the given {@code Group} and index to display.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" public GroupCard(Group group, int displayedIndex) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" super(FXML);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" this.group \u003d group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" name.setText(group.getGroupName().fullName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" group.getStudents().stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" .forEach(student -\u003e students.getChildren().add(new Label(student.toString())));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":51}},{"path":"src/main/java/seedu/address/ui/GroupListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"public class GroupListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" private static final String FXML \u003d \"GroupListPanel.fxml\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" private final Logger logger \u003d LogsCenter.getLogger(GroupListPanel.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" private ListView\u003cGroup\u003e groupListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" * Creates a {@code GroupListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" public GroupListPanel(ObservableList\u003cGroup\u003e groupList) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" super(FXML);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" groupListView.setItems(groupList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" groupListView.setCellFactory(listView -\u003e new GroupListViewCell());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Group} using a {@code GroupCard}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" class GroupListViewCell extends ListCell\u003cGroup\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" protected void updateItem(Group group, boolean empty) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" super.updateItem(group, empty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" if (empty || group \u003d\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" setGraphic(null);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" setText(null);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" setGraphic(new GroupCard(group, getIndex() + 1).getRoot());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":50}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.State;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" private static final State DEFAULT_STUDENT \u003d new State(\"Students\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" private static final State DEFAULT_GROUP \u003d new State(\"Groups\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" private StudentListPanel studentListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" private GroupListPanel groupListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" private StackPane informationListPanelPlaceholder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" studentListPanel \u003d new StudentListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":" groupListPanel \u003d new GroupListPanel(logic.getFilteredGroupList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":" if (this.logic.getState().equals(DEFAULT_STUDENT)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" informationListPanelPlaceholder.getChildren().add(studentListPanel.getRoot());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" informationListPanelPlaceholder.getChildren().add(groupListPanel.getRoot());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"SooYap"},"content":" public StudentListPanel getStudentListPanel() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"SooYap"},"content":" return studentListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"SooYap"},"content":" public GroupListPanel getGroupListPanel() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"SooYap"},"content":" return groupListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"SooYap"},"content":" * Changes the display of the system.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"SooYap"},"content":" @FXML","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"SooYap"},"content":" private void changeSystemState(int changeState) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"SooYap"},"content":" if (changeState \u003d\u003d 0) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"SooYap"},"content":" informationListPanelPlaceholder.getChildren().clear();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"SooYap"},"content":" informationListPanelPlaceholder.getChildren().add(studentListPanel.getRoot());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"SooYap"},"content":" } else {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"SooYap"},"content":" informationListPanelPlaceholder.getChildren().clear();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"SooYap"},"content":" informationListPanelPlaceholder.getChildren().add(groupListPanel.getRoot());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"SooYap"},"content":" if (commandResult.getChangeState() !\u003d -1) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"SooYap"},"content":" changeSystemState(commandResult.getChangeState());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"SooYap":35,"-":192}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ghos7ie"},"content":" * An UI component that displays information of a {@code Student}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" public final Student student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":" @FXML","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" private Label studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" * Creates a {@code PersonCode} with the given {@code Student} and index to display.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ghos7ie"},"content":" public PersonCard(Student student, int displayedIndex) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" this.student \u003d student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" name.setText(student.getName().fullName);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" email.setText(student.getEmail().value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"dez2003"},"content":" studentNumber.setText(student.getStudentNumber().value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" student.getTags().stream()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"ghos7ie":9,"-":48,"dez2003":3}},{"path":"src/main/java/seedu/address/ui/StudentListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"public class StudentListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListPanel.fxml\";","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" private final Logger logger \u003d LogsCenter.getLogger(StudentListPanel.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":" private ListView\u003cStudent\u003e personListView;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" public StudentListPanel(ObservableList\u003cStudent\u003e studentList) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ghos7ie"},"content":" personListView.setItems(studentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" personListView.setCellFactory(listView -\u003e new PersonListViewCell());","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Student} using a {@code PersonCard}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" class PersonListViewCell extends ListCell\u003cStudent\u003e {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" protected void updateItem(Student student, boolean empty) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" super.updateItem(student, empty);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" if (empty || student \u003d\u003d null) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" setGraphic(null);","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" setText(null);","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" setGraphic(new PersonCard(student, getIndex() + 1).getRoot());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"ghos7ie":9,"SooYap":4,"-":36}},{"path":"src/main/resources/view/GroupListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" \u003cVBox fx:id\u003d\"students\" styleClass\u003d\"cell_small_label\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":33}},{"path":"src/main/resources/view/GroupListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":" \u003cListView fx:id\u003d\"groupListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":8}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ghos7ie"},"content":" \u003cVBox fx:id\u003d\"studentList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" \u003cStackPane fx:id\u003d\"informationListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"1000\"/\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"SooYap":2,"-":58}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":" \u003cLabel fx:id\u003d\"studentNumber\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$student number\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"-":34,"dez2003":1}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.Messages.MESSAGE_STUDENT_NO_NOT_FOUND;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_NUMBER_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" String deleteCommand \u003d \"delete_student sno/A0000001A\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"YANYAN-w"},"content":" assertCommandException(deleteCommand, MESSAGE_STUDENT_NO_NOT_FOUND);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"ghos7ie"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"ghos7ie"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"dez2003"},"content":" String addCommand \u003d AddStudentCommand.COMMAND_WORD + NAME_DESC_AMY + EMAIL_DESC_AMY + STUDENT_NUMBER_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"ghos7ie"},"content":" Student expectedStudent \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"ghos7ie"},"content":" expectedModel.addPerson(expectedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"ghos7ie":9,"SooYap":2,"YANYAN-w":1,"-":155,"dez2003":3}},{"path":"src/test/java/seedu/address/logic/commands/AddGroupCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":"public class AddGroupCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" private static final GroupName VALID_GROUPNAME \u003d new GroupName(\"Team1\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" public void constructor_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddGroupCommand(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" ModelStubAcceptingGroupAdded modelStub \u003d new ModelStubAcceptingGroupAdded();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" Student validStudent \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" Group validGroup \u003d new Group(VALID_GROUPNAME, new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" CommandResult commandResult \u003d new AddGroupCommand(validGroup).execute(modelStub);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" assertEquals(String.format(AddGroupCommand.MESSAGE_SUCCESS, Messages.format(validGroup)),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" assertEquals(Arrays.asList(validGroup), modelStub.groupsAdded);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" Group validGroup \u003d new Group(VALID_GROUPNAME, new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addGroupCommand \u003d new AddGroupCommand(validGroup);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" ModelStub modelStub \u003d new ModelStubWithGroup(validGroup);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" assertThrows(CommandException.class, AddGroupCommand.MESSAGE_DUPLICATE_GROUP, () -\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" addGroupCommand.execute(modelStub));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" Group teamOne \u003d new Group(new GroupName(\"Team 1\"), new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" Group teamTwo \u003d new Group(new GroupName(\"Team 2\"), new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addTeamOneCommand \u003d new AddGroupCommand(teamOne);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addTeamTwoCommand \u003d new AddGroupCommand(teamTwo);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" assertTrue(addTeamOneCommand.equals(addTeamOneCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addTeamOneCommandCopy \u003d new AddGroupCommand(teamOne);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":" assertTrue(addTeamOneCommand.equals(addTeamOneCommandCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" assertFalse(addTeamOneCommand.equals(1));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" assertFalse(addTeamOneCommand.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" assertFalse(addTeamOneCommand.equals(addTeamTwoCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":" Group teamOne \u003d new Group(new GroupName(\"Team 1\"), new HashSet\u003c\u003e());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" AddGroupCommand addTeamOneCommand \u003d new AddGroupCommand(teamOne);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" String expected \u003d AddGroupCommand.class.getCanonicalName() + \"{toAdd\u003d\" + teamOne + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":" assertEquals(expected, addTeamOneCommand.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"SooYap"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SooYap"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SooYap"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"SooYap"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"SooYap"},"content":" public void addPerson(Student student) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"SooYap"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SooYap"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"SooYap"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"SooYap"},"content":" public void deletePerson(Student target) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"SooYap"},"content":" public void setPerson(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group updatedGroup) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cStudent\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"SooYap"},"content":" public void updateFilteredPersonList(Predicate\u003cStudent\u003e predicate) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"SooYap"},"content":" * A Model stub that contains a single group.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"SooYap"},"content":" private class ModelStubWithGroup extends ModelStub {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"SooYap"},"content":" private final Group group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"SooYap"},"content":" ModelStubWithGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"SooYap"},"content":" this.group \u003d group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"SooYap"},"content":" return this.group.isSameGroup(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"SooYap"},"content":" * A Model stub that always accept the group being added.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"SooYap"},"content":" private class ModelStubAcceptingGroupAdded extends ModelStub {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"SooYap"},"content":" final ArrayList\u003cGroup\u003e groupsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"SooYap"},"content":" return groupsAdded.stream().anyMatch(group::isSameGroup);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"SooYap"},"content":" requireNonNull(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"SooYap"},"content":" groupsAdded.add(group);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"SooYap"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"SooYap"},"content":" return new AddressBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":232}},{"path":"src/test/java/seedu/address/logic/commands/AddStudentCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"dez2003"},"content":" * Contains integration tests (interaction with the Model) for {@code AddStudentCommand}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommandIntegrationTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":" Student validStudent \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" expectedModel.addPerson(validStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"dez2003"},"content":" assertCommandSuccess(new AddStudentCommand(validStudent), model,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" String.format(AddStudentCommand.MESSAGE_SUCCESS, Messages.format(validStudent)),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" Student studentInList \u003d model.getAddressBook().getStudentList().get(0);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" assertCommandFailure(new AddStudentCommand(studentInList), model,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"dez2003"},"content":" AddStudentCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"ghos7ie":3,"SooYap":1,"-":38,"dez2003":6}},{"path":"src/test/java/seedu/address/logic/commands/AddStudentCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommandTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"dez2003"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddStudentCommand(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" Student validStudent \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"dez2003"},"content":" CommandResult commandResult \u003d new AddStudentCommand(validStudent).execute(modelStub);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":" assertEquals(String.format(AddStudentCommand.MESSAGE_SUCCESS, Messages.format(validStudent)),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" assertEquals(Arrays.asList(validStudent), modelStub.personsAdded);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" Student validStudent \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addCommand \u003d new AddStudentCommand(validStudent);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"dez2003"},"content":" assertThrows(CommandException.class, AddStudentCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"dez2003"},"content":" addCommand.execute(modelStub));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" Student alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"ghos7ie"},"content":" Student bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addAliceCommand \u003d new AddStudentCommand(alice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addBobCommand \u003d new AddStudentCommand(bob);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addAliceCommandCopy \u003d new AddStudentCommand(alice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"dez2003"},"content":" AddStudentCommand addCommand \u003d new AddStudentCommand(ALICE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"dez2003"},"content":" String expected \u003d AddStudentCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" public boolean hasGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SooYap"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"SooYap"},"content":" public void addGroup(Group group) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"SooYap"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"ghos7ie"},"content":" public void addPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"ghos7ie"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"ghos7ie"},"content":" public void deletePerson(Student target) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"ghos7ie"},"content":" public void setPerson(Student target, Student editedStudent) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"SooYap"},"content":" public void setGroup(Group target, Group updatedGroup) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"ghos7ie"},"content":" public ObservableList\u003cStudent\u003e getFilteredPersonList() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getFilteredGroupList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"ghos7ie"},"content":" public void updateFilteredPersonList(Predicate\u003cStudent\u003e predicate) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"ghos7ie"},"content":" * A Model stub that contains a single student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"ghos7ie"},"content":" private final Student student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"ghos7ie"},"content":" ModelStubWithPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"ghos7ie"},"content":" this.student \u003d student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"ghos7ie"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"ghos7ie"},"content":" return this.student.isSamePerson(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"ghos7ie"},"content":" * A Model stub that always accept the student being added.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"ghos7ie"},"content":" final ArrayList\u003cStudent\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"ghos7ie"},"content":" public boolean hasPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"ghos7ie"},"content":" return personsAdded.stream().anyMatch(student::isSamePerson);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"ghos7ie"},"content":" public void addPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"ghos7ie"},"content":" requireNonNull(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"ghos7ie"},"content":" personsAdded.add(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":30,"SooYap":14,"-":171,"dez2003":12}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" public static final String VALID_STUDENT_NUMBER_AMY \u003d \"A0234567J\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" public static final String VALID_STUDENT_NUMBER_BOB \u003d \"A0224466H\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_ONE \u003d \"Team1\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_TWO \u003d \"Team2\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_THREE \u003d \"Team3\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_FOUR \u003d \"Team4\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" public static final String TEAM_FIVE \u003d \"Team5\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" public static final String GROUP_ONE \u003d \"Group1\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" public static final String GROUP_TEN \u003d \"Group10\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"dez2003"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_STUDENT_NAME + VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"dez2003"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_STUDENT_NAME + VALID_NAME_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"dez2003"},"content":" public static final String STUDENT_NUMBER_DESC_AMY \u003d \" \" + PREFIX_STUDENT_NUMBER + VALID_STUDENT_NUMBER_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"dez2003"},"content":" public static final String STUDENT_NUMBER_DESC_BOB \u003d \" \" + PREFIX_STUDENT_NUMBER + VALID_STUDENT_NUMBER_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"dez2003"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_STUDENT_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"dez2003"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_FRIEND).withStudentNumber(VALID_STUDENT_NUMBER_AMY).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"dez2003"},"content":" .withEmail(VALID_EMAIL_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"dez2003"},"content":" .withStudentNumber(VALID_STUDENT_NUMBER_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"ghos7ie"},"content":" * - the address book, filtered student list and selected student in {@code actualModel} remain unchanged","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"ghos7ie"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"ghos7ie"},"content":" * Updates {@code model}\u0027s filtered list to show only the student at the given {@code targetIndex} in the","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"ghos7ie"},"content":" final String[] splitName \u003d student.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":8,"SooYap":9,"-":102,"dez2003":10}},{"path":"src/test/java/seedu/address/logic/commands/DeleteStudentCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"YANYAN-w"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"YANYAN-w"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"YANYAN-w"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"YANYAN-w"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"YANYAN-w"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"YANYAN-w"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.parser.DeleteStudentCommandParser;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"YANYAN-w"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"YANYAN-w"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"YANYAN-w"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"YANYAN-w"},"content":" * {@code DeleteStudentCommand}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"YANYAN-w"},"content":"public class DeleteStudentCommandTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"YANYAN-w"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"YANYAN-w"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"YANYAN-w"},"content":" public void execute_validStudentNumber_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"YANYAN-w"},"content":" Student studentToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber studentNumber \u003d studentToDelete.getStudentNumber();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteStudentCommand \u003d new DeleteStudentCommand(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"YANYAN-w"},"content":" String expectedMessage \u003d String.format(DeleteStudentCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"YANYAN-w"},"content":" Messages.format(studentToDelete));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"YANYAN-w"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"YANYAN-w"},"content":" expectedModel.deletePerson(studentToDelete);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"YANYAN-w"},"content":" assertCommandSuccess(deleteStudentCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"YANYAN-w"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"YANYAN-w"},"content":" public void execute_invalidStudentNumber_throwsCommandException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" assertParseFailure(new DeleteStudentCommandParser(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" \"B1234567\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"YANYAN-w"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"YANYAN-w"},"content":" public void equals() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber sno1 \u003d new StudentNumber(\"A0123456B\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber sno2 \u003d new StudentNumber(\"A0123456C\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteFirstCommand \u003d new DeleteStudentCommand(sno1);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteSecondCommand \u003d new DeleteStudentCommand(sno2);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"YANYAN-w"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"YANYAN-w"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"YANYAN-w"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteFirstCommandCopy \u003d new DeleteStudentCommand(sno1);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"YANYAN-w"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"YANYAN-w"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"YANYAN-w"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"YANYAN-w"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"YANYAN-w"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"YANYAN-w"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"YANYAN-w"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"YANYAN-w"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"YANYAN-w"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"YANYAN-w"},"content":" StudentNumber targetNumber \u003d new StudentNumber(\"A0123456B\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"YANYAN-w"},"content":" DeleteStudentCommand deleteStudentCommand \u003d new DeleteStudentCommand(targetNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" String expected \u003d DeleteStudentCommand.class.getCanonicalName() + \"{targetStudentNumber\u003d\" + targetNumber + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"YANYAN-w"},"content":" assertEquals(expected, deleteStudentCommand.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"YANYAN-w"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"YANYAN-w"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"YANYAN-w"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"YANYAN-w"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"YANYAN-w"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"YANYAN-w"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"YANYAN-w"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"YANYAN-w"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"YANYAN-w"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SooYap":6,"YANYAN-w":86}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"dez2003"},"content":" Student editedStudent \u003d new PersonBuilder().build(); //Amy Bee, amy@gmail.com, A01234567X","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"ghos7ie"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedStudent).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ghos7ie"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" Student lastStudent \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" Student editedStudent \u003d personInList.withName(VALID_NAME_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"ghos7ie"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"ghos7ie"},"content":" expectedModel.setPerson(lastStudent, editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" Student editedStudent \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ghos7ie"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":" Student studentInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"ghos7ie"},"content":" Student editedStudent \u003d new PersonBuilder(studentInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedStudent));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedStudent);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"dez2003"},"content":" Student firstStudent \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); //0","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"ghos7ie"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstStudent).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"dez2003"},"content":" System.out.println(descriptor);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"dez2003"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor); //1","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"ghos7ie"},"content":" // edit student in filtered list into a duplicate in address book","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SooYap"},"content":" Student studentInList \u003d model.getAddressBook().getStudentList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"ghos7ie"},"content":" new EditPersonDescriptorBuilder(studentInList).build());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"SooYap"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getStudentList().size());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":19,"SooYap":2,"-":158,"dez2003":4}},{"path":"src/test/java/seedu/address/logic/commands/EditStudentDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"public class EditStudentDescriptorTest {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" + editPersonDescriptor.getName().orElse(null) + \", email\u003d\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ghos7ie"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"dez2003"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", student number\u003d\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"dez2003"},"content":" + editPersonDescriptor.getStudentNumber().orElse(null) + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":3,"-":55,"dez2003":2}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ghos7ie"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":89}},{"path":"src/test/java/seedu/address/logic/parser/AddStudentCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_NUMBER_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.STUDENT_NUMBER_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"dez2003"},"content":"public class AddStudentCommandParserTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"dez2003"},"content":" private AddStudentCommandParser parser \u003d new AddStudentCommandParser();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" Student expectedStudent \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB, new AddStudentCommand(expectedStudent));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" Student expectedStudentMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"dez2003"},"content":" NAME_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"dez2003"},"content":" new AddStudentCommand(expectedStudentMultipleTags));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"ghos7ie"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NAME));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"dez2003"},"content":" // multiple student numbers","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"dez2003"},"content":" assertParseFailure(parser, STUDENT_NUMBER_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NUMBER));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"dez2003"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"dez2003"},"content":" validExpectedPersonString + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"dez2003"},"content":" + STUDENT_NUMBER_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NAME, PREFIX_EMAIL, PREFIX_STUDENT_NUMBER));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NAME));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"dez2003"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_STUDENT_NAME));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"ghos7ie"},"content":" Student expectedStudent \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"dez2003"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + EMAIL_DESC_AMY + STUDENT_NUMBER_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"dez2003"},"content":" new AddStudentCommand(expectedStudent));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"dez2003"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddStudentCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, VALID_NAME_BOB + EMAIL_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_EMAIL_BOB, expectedMessage);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_EMAIL_BOB, expectedMessage);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + EMAIL_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, NAME_DESC_BOB + EMAIL_DESC_BOB + INVALID_TAG_DESC","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"dez2003"},"content":" + VALID_TAG_FRIEND + STUDENT_NUMBER_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"dez2003"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + EMAIL_DESC_BOB + INVALID_TAG_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"dez2003"},"content":" + STUDENT_NUMBER_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"dez2003"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + STUDENT_NUMBER_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"dez2003"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"ghos7ie":15,"-":102,"dez2003":32}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.DeleteStudentCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"dez2003"},"content":" AddStudentCommand command \u003d (AddStudentCommand) parser.parseCommand(PersonUtil.getAddCommand(student));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"dez2003"},"content":" assertEquals(new AddStudentCommand(student), command);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" DeleteStudentCommand command \u003d (DeleteStudentCommand) parser.parseCommand(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" DeleteStudentCommand.COMMAND_WORD + \" sno/\" + ALICE.getStudentNumber().toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" assertEquals(new DeleteStudentCommand(ALICE.getStudentNumber()), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(student).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":5,"SooYap":5,"-":82,"dez2003":3}},{"path":"src/test/java/seedu/address/logic/parser/DeleteStudentCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.logic.commands.DeleteStudentCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"public class DeleteStudentCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private DeleteStudentCommandParser parser \u003d new DeleteStudentCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" assertParseSuccess(parser, \" sno/ \" + ALICE.getStudentNumber().toString(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" new DeleteStudentCommand(ALICE.getStudentNumber()));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteStudentCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"SooYap":8,"-":26}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ghos7ie"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Student} being edited,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_TAG_FRIEND,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"ghos7ie"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" + EMAIL_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"ghos7ie"},"content":" String userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"ghos7ie"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"dez2003"},"content":" // AddStudentCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"ghos7ie"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_EMAIL_DESC + EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"ghos7ie"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_BOB + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"ghos7ie"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"ghos7ie"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"ghos7ie"},"content":" + TAG_DESC_FRIEND + EMAIL_DESC_AMY + TAG_DESC_FRIEND + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"ghos7ie"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"ghos7ie"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_EMAIL_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"ghos7ie"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"ghos7ie":18,"-":155,"dez2003":1}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":33}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"ghos7ie":2,"-":142}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" private static final Group DUMMY_GROUP \u003d new Group(new GroupName(\"Dummy Group\"));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" assertEquals(Collections.emptyList(), addressBook.getStudentList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" assertEquals(Collections.emptyList(), addressBook.getGroupList());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" // Two students with the same identity fields","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e newStudents \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ghos7ie"},"content":" AddressBookStub newData \u003d new AddressBookStub(newStudents);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"ghos7ie"},"content":" public void hasPerson_nullStudent_throwsNullPointerException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasStudent(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" public void hasGroup_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasGroup(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ghos7ie"},"content":" public void hasPerson_studentNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":" assertFalse(addressBook.hasStudent(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" public void hasGroup_groupNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":" assertFalse(addressBook.hasGroup(DUMMY_GROUP));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" public void hasPerson_studentInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"ghos7ie"},"content":" assertTrue(addressBook.hasStudent(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":" public void hasGroup_groupInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":" addressBook.addGroup(DUMMY_GROUP);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" assertTrue(addressBook.hasGroup(DUMMY_GROUP));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"ghos7ie"},"content":" public void hasPerson_studentWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"ghos7ie"},"content":" assertTrue(addressBook.hasStudent(editedAlice));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SooYap"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getStudentList().remove(0));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{students\u003d\" + addressBook.getStudentList() + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"ghos7ie"},"content":" * A stub ReadOnlyAddressBook whose students list can violate interface constraints.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"ghos7ie"},"content":" private final ObservableList\u003cStudent\u003e students \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SooYap"},"content":" private final ObservableList\u003cGroup\u003e groups \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":" AddressBookStub(Collection\u003cStudent\u003e students) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"ghos7ie"},"content":" this.students.setAll(students);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SooYap"},"content":" this.groups.setAll(groups);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cStudent\u003e getStudentList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"ghos7ie"},"content":" return students;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SooYap"},"content":" public ObservableList\u003cGroup\u003e getGroupList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SooYap"},"content":" return groups;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"ghos7ie":22,"SooYap":24,"-":88}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" private static final Group DUMMY_GROUP \u003d new Group(new GroupName(\"Dummy Group\"));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" public void hasGroup_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasGroup(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SooYap"},"content":" public void hasGroup_groupNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SooYap"},"content":" assertFalse(modelManager.hasGroup(DUMMY_GROUP));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"SooYap"},"content":" public void hasGroup_groupInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SooYap"},"content":" modelManager.addGroup(DUMMY_GROUP);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SooYap"},"content":" assertTrue(modelManager.hasGroup(DUMMY_GROUP));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"SooYap":19,"-":131}},{"path":"src/test/java/seedu/address/model/group/GroupNameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"public class GroupNameTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e new GroupName(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new GroupName(invalidName));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" public void isValidName() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" // null name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e GroupName.isValidName(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" // invalid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" assertFalse(GroupName.isValidName(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" assertFalse(GroupName.isValidName(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" assertFalse(GroupName.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" assertFalse(GroupName.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" // valid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" assertTrue(GroupName.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" GroupName groupName \u003d new GroupName(\"Valid Name\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" assertTrue(groupName.equals(new GroupName(\"Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" assertTrue(groupName.equals(groupName));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" assertFalse(groupName.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" assertFalse(groupName.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" assertFalse(groupName.equals(new GroupName(\"Other Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":60}},{"path":"src/test/java/seedu/address/model/group/GroupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"public class GroupTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":" private static final Group FIRST_GROUP \u003d new Group(new GroupName(GROUP_ONE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":" private static final Group SECOND_GROUP \u003d new Group(new GroupName(TEAM_ONE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" public void isSameGroup() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" assertTrue(FIRST_GROUP.isSameGroup(FIRST_GROUP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" assertTrue(SECOND_GROUP.isSameGroup(SECOND_GROUP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" assertFalse(FIRST_GROUP.isSameGroup(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" Group firstGroupCopy \u003d new Group(FIRST_GROUP.getGroupName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" assertTrue(FIRST_GROUP.equals(firstGroupCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" assertTrue(FIRST_GROUP.equals(FIRST_GROUP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" assertFalse(FIRST_GROUP.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" assertFalse(FIRST_GROUP.equals(5));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" assertFalse(FIRST_GROUP.equals(SECOND_GROUP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" String expected \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" Group.class.getCanonicalName() + \"{groupname\u003d\" + FIRST_GROUP.getGroupName()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" + \", students\u003d\" + FIRST_GROUP.getStudents() + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":" assertEquals(expected, FIRST_GROUP.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":51}},{"path":"src/test/java/seedu/address/model/group/UniqueGroupListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.model.group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.student.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"public class UniqueGroupListTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":" private static final Group DUMMY_GROUP \u003d new Group(new GroupName(\"Team1\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" private final UniqueGroupList uniqueGroupList \u003d new UniqueGroupList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" public void contains_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.contains(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" public void contains_groupNotInList_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" assertFalse(uniqueGroupList.contains(DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" public void contains_groupInList_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.add(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" assertTrue(uniqueGroupList.contains(DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" public void add_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.add(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" public void add_duplicateGroup_throwsDuplicateGroupException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.add(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueGroupList.add(DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" public void setGroup_nullTargetGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.setGroup(null, DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" public void setGroup_nullEditedGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.setGroup(DUMMY_GROUP, null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" public void setGroup_targetGroupNotInList_throwsGroupNotFoundException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueGroupList.setGroup(DUMMY_GROUP, DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" public void remove_nullGroup_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.remove(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" public void remove_groupDoesNotExist_throwsGroupNotFoundException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueGroupList.remove(DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" public void remove_existingGroup_removesGroup() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.add(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.remove(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":" UniqueGroupList expectedUniqueGroupList \u003d new UniqueGroupList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"SooYap"},"content":" assertEquals(expectedUniqueGroupList, uniqueGroupList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SooYap"},"content":" public void setGroup_nullUniqueGroupList_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SooYap"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueGroupList.setGroup((Group) null, (Group) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SooYap"},"content":" public void setGroup_listWithDuplicateGroup_throwsDuplicatePersonException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SooYap"},"content":" uniqueGroupList.add(DUMMY_GROUP);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"SooYap"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueGroupList.setGroup(DUMMY_GROUP, DUMMY_GROUP));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"SooYap"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SooYap"},"content":" assertEquals(uniqueGroupList.asUnmodifiableObservableList().toString(), uniqueGroupList.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":93}},{"path":"src/test/java/seedu/address/model/student/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class EmailTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidEmail() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null email","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // blank email","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // missing parts","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // invalid parts","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // valid email","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":87}},{"path":"src/test/java/seedu/address/model/student/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ghos7ie"},"content":" assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ghos7ie"},"content":" .withEmail(\"alice@email.com\").build()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"-":81}},{"path":"src/test/java/seedu/address/model/student/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"ghos7ie":1,"-":59}},{"path":"src/test/java/seedu/address/model/student/StudentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_NUMBER_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.TypicalPersons.JASON;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":"public class StudentTest {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" Student student \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ghos7ie"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e student.getTags().remove(0));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" assertTrue(JASON.isSamePerson(JASON));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ghos7ie"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"dez2003"},"content":" // different student number, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"dez2003"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withStudentNumber(VALID_STUDENT_NUMBER_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" Student editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_AMY.toLowerCase()).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SooYap"},"content":" // student name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ghos7ie"},"content":" Student aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ghos7ie"},"content":" // different student -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":" String expected \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"ghos7ie"},"content":" Student.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", email\u003d\" + ALICE.getEmail()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"dez2003"},"content":" + \", tags\u003d\" + ALICE.getTags() + \", student number\u003d\" + ALICE.getStudentNumber()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"dez2003"},"content":" + \", group\u003d\" + ALICE.getGroup().orElse(\"\") + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"ghos7ie":11,"SooYap":6,"-":74,"dez2003":4}},{"path":"src/test/java/seedu/address/model/student/UniqueStudentListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"ghos7ie"},"content":"package seedu.address.model.student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.DuplicatePersonException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.exceptions.PersonNotFoundException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":"public class UniqueStudentListTest {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":" private final UniqueStudentList uniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.contains(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" assertFalse(uniqueStudentList.contains(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ghos7ie"},"content":" assertTrue(uniqueStudentList.contains(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ghos7ie"},"content":" assertTrue(uniqueStudentList.contains(editedAlice));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void add_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.add(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void add_duplicatePerson_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueStudentList.add(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void setPerson_nullTargetPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setPerson(null, ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setPerson_nullEditedPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setPerson(ALICE, null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setPerson_targetPersonNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ghos7ie"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueStudentList.setPerson(ALICE, ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonIsSamePerson_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPerson(ALICE, ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":" Student editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPerson(ALICE, editedAlice);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(editedAlice);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasDifferentIdentity_success() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPerson(ALICE, BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void setPerson_editedPersonHasNonUniqueIdentity_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"ghos7ie"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueStudentList.setPerson(ALICE, BOB));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void remove_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.remove(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void remove_personDoesNotExist_throwsPersonNotFoundException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"ghos7ie"},"content":" assertThrows(PersonNotFoundException.class, () -\u003e uniqueStudentList.remove(ALICE));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void remove_existingPerson_removesPerson() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.remove(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setPersons_nullUniquePersonList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setPersons((UniqueStudentList) null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void setPersons_uniquePersonList_replacesOwnListWithProvidedUniquePersonList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPersons(expectedUniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void setPersons_nullList_throwsNullPointerException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"ghos7ie"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueStudentList.setPersons((List\u003cStudent\u003e) null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void setPersons_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.add(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e studentList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"ghos7ie"},"content":" uniqueStudentList.setPersons(studentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"ghos7ie"},"content":" UniqueStudentList expectedUniqueStudentList \u003d new UniqueStudentList();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"ghos7ie"},"content":" expectedUniqueStudentList.add(BOB);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"ghos7ie"},"content":" assertEquals(expectedUniqueStudentList, uniqueStudentList);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void setPersons_listWithDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"ghos7ie"},"content":" List\u003cStudent\u003e listWithDuplicateStudents \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"ghos7ie"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e uniqueStudentList.setPersons(listWithDuplicateStudents));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"ghos7ie"},"content":" -\u003e uniqueStudentList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"ghos7ie"},"content":" assertEquals(uniqueStudentList.asUnmodifiableObservableList().toString(), uniqueStudentList.toString());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"ghos7ie":60,"-":114}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedGroupTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.storage.JsonAdaptedGroup.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"public class JsonAdaptedGroupTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":" private static final String INVALID_NAME \u003d \"Te@m1\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" private static final String VALID_STUDENT_NUMBER \u003d BENSON.getStudentNumber().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" public void toModelType_validGroupDetails_returnsGroup() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" Group teamOne \u003d new Group(new GroupName(\"Team1\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" JsonAdaptedGroup group \u003d new JsonAdaptedGroup(teamOne);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" assertEquals(teamOne, group.toModelType());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" public void toModelType_invalidGroupName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" JsonAdaptedGroup group \u003d new JsonAdaptedGroup(INVALID_NAME, new ArrayList\u003cJsonAdaptedPerson\u003e());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" String expectedMessage \u003d GroupName.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalValueException.class, expectedMessage, group::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SooYap"},"content":" JsonAdaptedGroup group \u003d new JsonAdaptedGroup(null, new ArrayList\u003cJsonAdaptedPerson\u003e());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, GroupName.class.getSimpleName());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalValueException.class, expectedMessage, group::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"SooYap":48}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedStudentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ghos7ie"},"content":"public class JsonAdaptedStudentTest {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"dez2003"},"content":" private static final String VALID_STUDENT_NUMBER \u003d BENSON.getStudentNumber().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"dez2003"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_EMAIL, VALID_TAGS, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_EMAIL, VALID_TAGS, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"dez2003"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_EMAIL, VALID_TAGS, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"dez2003"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_TAGS, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"dez2003"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_EMAIL, invalidTags, VALID_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":3,"-":66,"dez2003":6}},{"path":"src/test/java/seedu/address/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.IDA;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" public void readAddressBook_invalidGroupAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidGroupAddressBook.json\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ghos7ie"},"content":" original.addStudent(HOON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ghos7ie"},"content":" original.removeStudent(ALICE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ghos7ie"},"content":" original.addStudent(IDA);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":3,"SooYap":5,"-":107}},{"path":"src/test/java/seedu/address/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"import seedu.address.testutil.TypicalGroups;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path TYPICAL_PERSONS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalPersonsAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Path INVALID_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidPersonAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Path DUPLICATE_PERSON_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicatePersonAddressBook.json\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":" private static final Path DUPLICATE_GROUP_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateGroupAddressBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" private static final Path INVALID_GROUP_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidGroupAddressBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" private static final Path TYPICAL_GROUPS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalGroupAddressBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void toModelType_typicalPersonsFile_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PERSONS_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalPersons.getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PERSON_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PERSON_FILE,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_PERSON,","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SooYap"},"content":" public void toModelType_duplicateGroups_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_GROUP_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_GROUP,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SooYap"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SooYap"},"content":" public void toModelType_invalidGroupFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_GROUP_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SooYap"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SooYap"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SooYap"},"content":" public void toModelType_typicalGroupsFile_success() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_GROUPS_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SooYap"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" AddressBook typicalPersonsAddressBook \u003d TypicalGroups.getTypicalAddressBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SooYap"},"content":" assertEquals(addressBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"SooYap":28,"-":47}},{"path":"src/test/java/seedu/address/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" addressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" * Adds a new {@code Student} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":" public AddressBookBuilder withPerson(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ghos7ie"},"content":" addressBook.addStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":4,"-":30}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"dez2003"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code student}\u0027s details","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" public EditPersonDescriptorBuilder(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" descriptor.setName(student.getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ghos7ie"},"content":" descriptor.setEmail(student.getEmail());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" descriptor.setTags(student.getTags());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" descriptor.setStudentNumber(student.getStudentNumber());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"dez2003"},"content":" public EditPersonDescriptorBuilder withStudentNumber(String studentNumber) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"dez2003"},"content":" descriptor.setStudentNumber(new StudentNumber(studentNumber));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":8,"-":66,"dez2003":4}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"dez2003"},"content":"import seedu.address.model.student.StudentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ghos7ie"},"content":" * A utility class to help with building Student objects.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" public static final String DEFAULT_STUDENT_NUMBER \u003d \"A0123456X\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"dez2003"},"content":" private StudentNumber studentNumber;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" private Optional\u003cString\u003e group;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"dez2003"},"content":" studentNumber \u003d new StudentNumber(DEFAULT_STUDENT_NUMBER);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" group \u003d Optional.empty();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ghos7ie"},"content":" * Initializes the PersonBuilder with the data of {@code studentToCopy}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" public PersonBuilder(Student studentToCopy) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" name \u003d studentToCopy.getName();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ghos7ie"},"content":" email \u003d studentToCopy.getEmail();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ghos7ie"},"content":" tags \u003d new HashSet\u003c\u003e(studentToCopy.getTags());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"dez2003"},"content":" studentNumber \u003d studentToCopy.getStudentNumber();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SooYap"},"content":" group \u003d studentToCopy.getGroup();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" * Sets the {@code Name} of the {@code Student} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ghos7ie"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Student} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SooYap"},"content":" * Sets the {@code String} group name of the {@code Student} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SooYap"},"content":" public PersonBuilder withGroup(String group) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SooYap"},"content":" this.group \u003d Optional.of(group);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ghos7ie"},"content":" * Sets the {@code Email} of the {@code Student} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"dez2003"},"content":" * Sets the {@code StudentNumber} of the {@code Student} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"dez2003"},"content":" public PersonBuilder withStudentNumber(String studentNumber) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"dez2003"},"content":" this.studentNumber \u003d new StudentNumber(studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"dez2003"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"dez2003"},"content":" * Builds a {@code Student}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"dez2003"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"dez2003"},"content":" * @returns A Student.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"dez2003"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"ghos7ie"},"content":" public Student build() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"dez2003"},"content":" return group.isPresent()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"dez2003"},"content":" ? new Student(name, email, tags, studentNumber, group) : new Student(name, email, tags, studentNumber);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"ghos7ie":13,"SooYap":8,"-":66,"dez2003":14}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NAME;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_STUDENT_NUMBER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"dez2003"},"content":"import seedu.address.logic.commands.AddStudentCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ghos7ie"},"content":" * A utility class for Student.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ghos7ie"},"content":" * Returns an add command string for adding the {@code student}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ghos7ie"},"content":" public static String getAddCommand(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"dez2003"},"content":" return AddStudentCommand.COMMAND_WORD + \" \" + getPersonDetails(student);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ghos7ie"},"content":" * Returns the part of command string for the given {@code student}\u0027s details.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":" public static String getPersonDetails(Student student) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"dez2003"},"content":" sb.append(PREFIX_STUDENT_NAME + student.getName().fullName + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ghos7ie"},"content":" sb.append(PREFIX_EMAIL + student.getEmail().value + \" \");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" student.getTags().stream().forEach(","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"dez2003"},"content":" sb.append(PREFIX_STUDENT_NUMBER + student.getStudentNumber().value + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"dez2003"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_STUDENT_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"dez2003"},"content":" sb.append(PREFIX_TAG).append(\" \");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"dez2003"},"content":" descriptor.getStudentNumber().ifPresent(studentNumber -\u003e sb.append(PREFIX_STUDENT_NUMBER)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"dez2003"},"content":" .append(studentNumber.value));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"ghos7ie":8,"-":42,"dez2003":10}},{"path":"src/test/java/seedu/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" * Returns the middle index of the student in the {@code model}\u0027s student list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size() / 2);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ghos7ie"},"content":" * Returns the last index of the student in the {@code model}\u0027s student list.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" * Returns the student in the {@code model}\u0027s student list at {@code index}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ghos7ie"},"content":" public static Student getPerson(Model model, Index index) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList().get(index.getZeroBased());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"ghos7ie":5,"-":50}},{"path":"src/test/java/seedu/address/testutil/TypicalGroups.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SooYap"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GROUP_TEN;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_FIVE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_FOUR;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_THREE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SooYap"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TEAM_TWO;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.Group;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SooYap"},"content":"import seedu.address.model.group.GroupName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SooYap"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SooYap"},"content":" * A utility class containing a list of {@code Group} objects to be used in tests.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SooYap"},"content":"public class TypicalGroups {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SooYap"},"content":" private TypicalGroups() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SooYap"},"content":" } // prevents instantiation","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SooYap"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SooYap"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" * Returns an {@code AddressBook} with all the typical persons and groups.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SooYap"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SooYap"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_FIVE)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_FOUR)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_THREE)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_TWO)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(GROUP_ONE)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(TEAM_ONE)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" ab.addGroup(new Group(new GroupName(GROUP_TEN)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SooYap"},"content":" return ab;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"SooYap":38}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_NUMBER_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"dez2003"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_STUDENT_NUMBER_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ghos7ie"},"content":"import seedu.address.model.student.Student;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ghos7ie"},"content":" * A utility class containing a list of {@code Student} objects to be used in tests.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ghos7ie"},"content":" public static final Student ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SooYap"},"content":" .withEmail(\"alice@example.com\").withTags(\"friends\").withStudentNumber(\"A0111111J\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ghos7ie"},"content":" public static final Student BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SooYap"},"content":" .withEmail(\"johnd@example.com\").withTags(\"owesMoney\", \"friends\").withStudentNumber(\"A0222222H\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"dez2003"},"content":" public static final Student CARL \u003d new PersonBuilder().withName(\"Carl Kurz\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SooYap"},"content":" .withEmail(\"heinz@example.com\").withStudentNumber(\"A0333333M\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ghos7ie"},"content":" public static final Student DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SooYap"},"content":" .withEmail(\"cornelia@example.com\").withTags(\"friends\").withStudentNumber(\"A0444444N\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ghos7ie"},"content":" public static final Student ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SooYap"},"content":" .withEmail(\"werner@example.com\").withStudentNumber(\"A0555555H\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ghos7ie"},"content":" public static final Student FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SooYap"},"content":" .withEmail(\"lydia@example.com\").withStudentNumber(\"A0666666J\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ghos7ie"},"content":" public static final Student GEORGE \u003d new PersonBuilder().withName(\"George Best\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SooYap"},"content":" .withEmail(\"anna@example.com\").withStudentNumber(\"A0888888M\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SooYap"},"content":" public static final Student JASON \u003d new PersonBuilder().withName(\"Jason Derulo\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SooYap"},"content":" .withEmail(\"jason@example.com\").withGroup(\"Group 1\").withStudentNumber(\"A0999999J\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ghos7ie"},"content":" public static final Student HOON \u003d new PersonBuilder().withName(\"Hoon Meier\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SooYap"},"content":" .withEmail(\"stefan@example.com\").withStudentNumber(\"A0969743K\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ghos7ie"},"content":" public static final Student IDA \u003d new PersonBuilder().withName(\"Ida Mueller\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SooYap"},"content":" .withEmail(\"hans@example.com\").withStudentNumber(\"A0887321S\").build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ghos7ie"},"content":" // Manually added - Student\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"ghos7ie"},"content":" public static final Student AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"dez2003"},"content":" .withEmail(VALID_EMAIL_AMY).withTags(VALID_TAG_FRIEND).withStudentNumber(VALID_STUDENT_NUMBER_AMY).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ghos7ie"},"content":" public static final Student BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ghos7ie"},"content":" .withEmail(VALID_EMAIL_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"dez2003"},"content":" .withStudentNumber(VALID_STUDENT_NUMBER_BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ghos7ie"},"content":" private TypicalPersons() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ghos7ie"},"content":" } // prevents instantiation","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"ghos7ie"},"content":" for (Student student : getTypicalPersons()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"ghos7ie"},"content":" ab.addStudent(student);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"ghos7ie"},"content":" public static List\u003cStudent\u003e getTypicalPersons() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"ghos7ie":19,"SooYap":11,"-":38,"dez2003":5}}] diff --git a/AY2425S1-CS2103-F12-2_tp_master/commits.json b/AY2425S1-CS2103-F12-2_tp_master/commits.json index 232b423a..874a18e1 100644 --- a/AY2425S1-CS2103-F12-2_tp_master/commits.json +++ b/AY2425S1-CS2103-F12-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"ghos7ie":[{"date":"2024-09-23","commitResults":[{"hash":"c6b009918091e5ad464c3a88989dded90cd75451","isMergeCommit":false,"messageTitle":"Add Remark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":283,"deletions":96},"test-code":{"insertions":238,"deletions":28}}},{"hash":"88f2f7e4af142a82e26560893321a89f5c0672ae","isMergeCommit":false,"messageTitle":"Add EOL","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":12},"test-code":{"insertions":6,"deletions":6}}},{"hash":"a7cf40025a0be1403c843cb5ef3b6d0c20c0fda1","isMergeCommit":false,"messageTitle":"Add EOL","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"47f9fd4285fba79851e5b48d2e0b3875d904e9ba","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":26},"test-code":{"insertions":4,"deletions":3}}},{"hash":"98fa304bbd47f091852baa84265764847bfab89c","isMergeCommit":false,"messageTitle":"Fix Test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":63,"deletions":146}}},{"hash":"599b1f186240c7475ca668d0c736cf5e9fa50986","isMergeCommit":false,"messageTitle":"Add EOL","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}}]},{"date":"2024-10-02","commitResults":[{"hash":"cd053ecb1681755db122354ce02b30fde917539b","isMergeCommit":false,"messageTitle":"remove commits from tutorial adding","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":93,"deletions":283},"test-code":{"insertions":164,"deletions":292}}},{"hash":"d67796536c59b42ec9719c708f16f6264524bee2","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"10a85d8a82e62187490dce911a5d993c76af184f","isMergeCommit":true,"messageTitle":"Merge pull request #17 from YANYAN-w/branch-#14","messageBody":"Update yanyan\u0027s info in AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"1e03f3b1fb7db8ca52f0f8d100ba6c9a6005c447","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":292,"deletions":86}}},{"hash":"2c2376767bc85693d356c5a85165dd19242e5447","isMergeCommit":false,"messageTitle":"Update product scope","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":2}}}]},{"date":"2024-10-04","commitResults":[{"hash":"79c124ba22b8dd44117759cce9e40c634e810c6d","isMergeCommit":false,"messageTitle":"Update readme.md and dg","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":16}}},{"hash":"4168f63358d2df6359a706471157fb52d770b8a0","isMergeCommit":true,"messageTitle":"Merge pull request #34 from ghos7ie/update-readme","messageBody":"Update readme.md and dg","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"9a6c24d18de65d9b2df2ca11b70394ec61baf364","isMergeCommit":false,"messageTitle":"Rename Person to Student all updated in main folder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":214,"deletions":448},"other":{"insertions":98,"deletions":115},"docs":{"insertions":30,"deletions":30},"test-code":{"insertions":184,"deletions":196}}},{"hash":"6bbd9d3b3b9e6600b5a8252c69ab4422a25f8f37","isMergeCommit":false,"messageTitle":"Update JUnit test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":35},"other":{"insertions":6,"deletions":6},"test-code":{"insertions":180,"deletions":547}}},{"hash":"adafe7c0765fc4d7cccc80d229c8e420e41e549f","isMergeCommit":true,"messageTitle":"Merge pull request #37 from ghos7ie/rename-remove","messageBody":"Closes #36","fileTypesAndContributionMap":{}},{"hash":"a4a990c583d755b61ce99b6cbced1a619afda0f1","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":16},"test-code":{"insertions":4,"deletions":12}}},{"hash":"12046f083772617a4d22c5242a4615fb67ab4de0","isMergeCommit":true,"messageTitle":"Merge pull request #40 from ghos7ie/rename-remove","messageBody":"Fix checkstyle","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"d345da05e2254b38577ac73a457ef8b8fcb5972e","isMergeCommit":true,"messageTitle":"Merge pull request #48 from dez2003/add-student","messageBody":"Add Student","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"cae1dd577beae8facf6c3dfc284460e9f630dfa0","isMergeCommit":true,"messageTitle":"Merge pull request #60 from SooYap/update-gui","messageBody":"Update GUI","fileTypesAndContributionMap":{}}]}],"SooYap":[{"date":"2024-10-02","commitResults":[{"hash":"d3e8e03953102ccf1df328f842428539774e3aee","isMergeCommit":false,"messageTitle":"Update Soo Yap information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"05d96815caf1fe22b2f8ab9d7676a12f6195795d","isMergeCommit":true,"messageTitle":"Merge pull request #15 from dez2003/branch-update-aboutus","messageBody":"Update Desiree\u0027s details on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"a1d6e50bdde6cb4a287b42e56a41217063369e6d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"8a4664bdb931714dec1cc8ccbe5a05cdcee9e0fe","isMergeCommit":false,"messageTitle":"Update photo name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9ba059b91209b3ee6b594fd30ed6e2bad2d243bd","isMergeCommit":true,"messageTitle":"Merge pull request #27 from SooYap/Update-Photo","messageBody":"Update SooYap photo","fileTypesAndContributionMap":{}},{"hash":"f3c793fb8bfe5e4dc75a8896af6f0430ef16cbe3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f1fdc01a090e0a3d01b91b61f11dc91dfb168e53","isMergeCommit":true,"messageTitle":"Merge pull request #26 from ghos7ie/update-dg","messageBody":"Update DG","fileTypesAndContributionMap":{}},{"hash":"7a32368bad961eeefd60a49a80c31502763590c3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"56ea28fc3d7ad2401f3e5bea6c1f27df5b865b89","isMergeCommit":false,"messageTitle":"Update Developer Guide with use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":130,"deletions":3}}},{"hash":"8493dbec077685550acd8907381f5df0e102fb83","isMergeCommit":true,"messageTitle":"Merge pull request #31 from SooYap/Update-DG","messageBody":"Update DG","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"086b955dc615c6a7d6244ac7604bf1ba16545d95","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f93d9778552398ed936f916dd0fdce5bdba8babd","isMergeCommit":false,"messageTitle":"Add optional group field in Student class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":4}}},{"hash":"ecacda6aba7142b9e3fa19df4aeff9181f7d8bb9","isMergeCommit":false,"messageTitle":"Fix syntax errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"13c16f4894462b5755e86dacb87f81cd30a90341","isMergeCommit":false,"messageTitle":"Add Javadoc comment to new Student constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":1}}},{"hash":"3bc340e59251630a928ddef20f8a93eb5b227a77","isMergeCommit":true,"messageTitle":"Merge pull request #43 from SooYap/update-student-fields","messageBody":"Update student fields","fileTypesAndContributionMap":{}},{"hash":"3f03d57b69798a0500ab7e1bc6d2549f571234c8","isMergeCommit":false,"messageTitle":"Add minimal test cases for new optional group field in Student","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":18,"deletions":2}}},{"hash":"9337c6a5a92c8e6ad06730b71fff3358f9d8f911","isMergeCommit":true,"messageTitle":"Merge pull request #44 from SooYap/update-student-fields","messageBody":"Add minimal test cases for new optional group field in Student","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"0b3c3f410d79693473b0be0ef18ec928c5eed342","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9dad478a2f32e6566900639275b3dfb4d961e5e6","isMergeCommit":false,"messageTitle":"Add Group class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":170,"deletions":5},"test-code":{"insertions":7,"deletions":3}}},{"hash":"8279f6350d0fdebe57b41a9adf61cf895713b410","isMergeCommit":false,"messageTitle":"Include a UniqueGroupList, AddGroupCommand and AddGroupCommandParser class, and update the relevant fields in ModelManager, ReadOnlyAddressBook, CliSyntax, ParserUtil, and Messages classes to support the new function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":398,"deletions":5},"test-code":{"insertions":8,"deletions":8}}}]},{"date":"2024-10-10","commitResults":[{"hash":"b9e1e15581bbd64d87ac9b1503ea10d36b59e751","isMergeCommit":false,"messageTitle":"Correct checkstyle violations","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":12}}},{"hash":"d58892412642d2de1493749c67bed311bd810b07","isMergeCommit":false,"messageTitle":"Update test cases to cover the newly added fields","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":30,"deletions":1}}},{"hash":"3f26715ce96b116a99afaa91735ccb5123c96f02","isMergeCommit":false,"messageTitle":"Correct test checkstyle violations","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"f3dd881071dee4c669969732b75b26764f80fc1e","isMergeCommit":false,"messageTitle":"Implement storage saving functionality for adding groups","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":100,"deletions":3}}},{"hash":"9c0fabac77ca948c477e4c6dda7483877650b6d3","isMergeCommit":false,"messageTitle":"Fix error message which displays upon user entering an invalid group name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":7}}},{"hash":"9394f64353154b81d858311cf0897dcd759bbb70","isMergeCommit":false,"messageTitle":"Update JUnit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":2},"test-code":{"insertions":421,"deletions":0}}},{"hash":"80814164b076741d1d0c4b40c88d27fe649fceaf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"438dc11a07fa9b0993d49574fc10007f4abd7bf9","isMergeCommit":true,"messageTitle":"Merge branch \u0027create-group-class\u0027","messageBody":"# Conflicts:\n#\tsrc/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json\n#\tsrc/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.java\n","fileTypesAndContributionMap":{}},{"hash":"7d0a0886c8a39544e0d50d0d1ecf285cab98c3e3","isMergeCommit":true,"messageTitle":"Merge pull request #52 from SooYap/master","messageBody":"Add Student and Add Group Functionality","fileTypesAndContributionMap":{}},{"hash":"4ae35a31cf3b65762c3e6025aee99e9e573fe372","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-delete-student","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fed9d9d637af7565a8062429c51bc67377191eae","isMergeCommit":true,"messageTitle":"Merge pull request #49 from YANYAN-w/branch-delete-student","messageBody":"Refactored DeleteCommand to DeleteStudentCommand","fileTypesAndContributionMap":{}},{"hash":"bacf4fba1d6a4ba1b66386d77fb4e6c696efc7c5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"60698b9cfabee2b27e6e99943696fcc329badc88","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":32}}}]},{"date":"2024-10-11","commitResults":[{"hash":"bd6aaaebad06b381aaa107c03b5b9bf4956d296b","isMergeCommit":false,"messageTitle":"Fix JUnit test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":120},"other":{"insertions":8,"deletions":7},"test-code":{"insertions":20,"deletions":139}}},{"hash":"c1a947915ae8e986c1b731c2979f6f997b6ddefc","isMergeCommit":true,"messageTitle":"Merge pull request #53 from SooYap/remove-current-bugs","messageBody":"Remove current bugs","fileTypesAndContributionMap":{}},{"hash":"c5ea404182fefb8b740fdcca6b71f241662c035f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"882d49fd9e7a0acd4e9899d12e4abaac68ce7e9b","isMergeCommit":false,"messageTitle":"Add and update more test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3},"test-code":{"insertions":52,"deletions":13}}}]},{"date":"2024-10-12","commitResults":[{"hash":"3b57bbc5d044907a1771d52f308b229400f1ae1f","isMergeCommit":false,"messageTitle":"Update JUnit test cases and fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":22},"test-code":{"insertions":154,"deletions":10}}},{"hash":"d8894bd12b37c21020171f0045958ce3f2861ca1","isMergeCommit":false,"messageTitle":"Fix more checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"f23d8880c0d5f397da149874d424e51d6b62af42","isMergeCommit":true,"messageTitle":"Merge pull request #57 from SooYap/update-more-test-cases","messageBody":"Update more test cases","fileTypesAndContributionMap":{}},{"hash":"a652975cb9ca4c675444e592120a8e75b5ee3408","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"78cebfbff2eea62f41a32ca8077287acbe19cfeb","isMergeCommit":false,"messageTitle":"Create placeholder element to display group list and create State class to reflect different GUI display states","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":271,"deletions":13},"other":{"insertions":4,"deletions":4}}}]}],"YANYAN-w":[{"date":"2024-10-02","commitResults":[{"hash":"f02fe3b9de4b9ab7e6f73d58fa17286a11a6cde1","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"fa6e8ff4f450ce88aaa6fcc798d9046273ef2303","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"7a45d6c21a38d1f44c595d5c2451f25506ed9778","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-lewis-aboutus","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"53f4d21ace3136fee65e764e3746a3d8c1796a38","isMergeCommit":true,"messageTitle":"Merge pull request #18 from ghos7ie/update-lewis-aboutus","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"bd338ec5ace4e3d80a50c54181fdf481a72e527c","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":3}}},{"hash":"9116dedd5e4ff95ed3aa78f6572f9102a1d0887c","isMergeCommit":true,"messageTitle":"Merge pull request #23 from YANYAN-w/branch-A","messageBody":"Update README.md","fileTypesAndContributionMap":{}},{"hash":"5b59b1f35b0cb35df6ff182a50b778abf89a6927","isMergeCommit":true,"messageTitle":"Merge pull request #25 from YANYAN-w/branch-A","messageBody":"Update README and Ui image","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"7b08e60b9b674e8360c1521962ee25c8643769a5","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":6}}},{"hash":"7fcccd8919051b2d02eaf64afbec9a8338a0d962","isMergeCommit":true,"messageTitle":"Merge pull request #28 from YANYAN-w/branch-A","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"e805953fc4b098faa77b871a482c51c2db5d111f","isMergeCommit":false,"messageTitle":"refactored DeleteCommand to DeleteStudentCommand, updated the test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":258,"deletions":27},"test-code":{"insertions":98,"deletions":4}}}]},{"date":"2024-10-10","commitResults":[{"hash":"14c9b89793a2054cd6251371675cccd0ac9ea720","isMergeCommit":true,"messageTitle":"Merge branch \u0027create-group-class\u0027 of https://github.com/SooYap/tp into SooYap-create-group-class","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"81597ee6c0a131e58867812a9dcef96f02cc8137","isMergeCommit":true,"messageTitle":"Merge branch \u0027SooYap-create-group-class\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}],"dez2003":[{"date":"2024-10-02","commitResults":[{"hash":"cef679ad04a1d10e3d0863011036ce737c5c8799","isMergeCommit":false,"messageTitle":"Update Desiree\u0027s details on AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":15}}},{"hash":"ddf4bc2806d8c4627280b0e07bd4378734af57a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6f9f87d4462c06013b2831c09c3fadc80a95ac2b","isMergeCommit":true,"messageTitle":"Merge pull request #16 from SooYap/Update-AboutUs","messageBody":"Update Soo Yap information","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"3252f23ad23eea007cd78c6b393f0b42ce693a6d","isMergeCommit":false,"messageTitle":"Update site-wide settings using MarkBind","messageBody":"Renamed AB-3 with T_Assistant across all site pages, and removed\nplaceholder in AboutUs page.\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":17}}},{"hash":"153915705ae5b94ab7738efb0c5c1d17b6b957ae","isMergeCommit":true,"messageTitle":"Merge pull request #32 from dez2003/branch-B","messageBody":"Update site-wide settings using MarkBind","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"682f5c7ab6bea03e164621ec08b10136e98572e1","isMergeCommit":false,"messageTitle":"Add studentNumber field to Student class","messageBody":"The Student class doesn\u0027t have a student number field, which is\nconsidered important information to have for tutors to uniquely\nidentify each student.\n\nLet\u0027s add a student number field and update other classes\nwhere necessary.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":6},"test-code":{"insertions":14,"deletions":1}}},{"hash":"cbce0f810453ec0ddc3557d0af6db977e7b4c666","isMergeCommit":false,"messageTitle":"Update Parser and AddCommand and its related classes","messageBody":"The parser and add command doesn\u0027t take into account the new argument\nstudent number when adding a new student to the system since it was a\nnew field added for Student class.\n\nLet\u0027s\n* add the student number prefix and rename the student name prefix\n* add the argument student number to AddCommand\n* implement the prefixes into the parser, command, and test classes\n* rename the command word to \"add_student\"\n","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":22},"test-code":{"insertions":39,"deletions":22}}},{"hash":"3857e0df83268a63b54fc15bbb288750f501a05d","isMergeCommit":false,"messageTitle":"Modify GUI to show student number","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":10},"test-code":{"insertions":6,"deletions":7}}},{"hash":"c7cb20619af3ca4d58fe8824be5ff5c4bbb364d2","isMergeCommit":false,"messageTitle":"Refactor AddCommand class to AddStudentCommand","messageBody":"The class name AddCommand is too general since there\u0027ll be another\nfeature that will be adding groups.\n\nTo make the command more specific and easier to understand, let\u0027s\nrename the class name to AddStudentCommand and rename other related\nclass\u0027 names.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":38,"deletions":38},"test-code":{"insertions":8,"deletions":8}}},{"hash":"016be2c20c514ed4812e66d29d9dea9d3eaaeef8","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":8},"test-code":{"insertions":2,"deletions":1}}},{"hash":"28e2c5b69856aa5e51a51930440170c2adeec41e","isMergeCommit":false,"messageTitle":"Add JavaDoc comment to StudentNumber class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"cfdaba6eb75d19c6033f2fbab8b7a6b4a956b76c","isMergeCommit":false,"messageTitle":"Fix more checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":6}}}]},{"date":"2024-10-10","commitResults":[{"hash":"2b9de41f0ce9384333acf6a714b2e8badcb48d5b","isMergeCommit":false,"messageTitle":"Update code to pass all tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":9},"test-code":{"insertions":52,"deletions":31}}}]}]},"authorFileTypeContributionMap":{"ghos7ie":{"docs":325,"functional-code":251,"test-code":278},"SooYap":{"docs":134,"functional-code":991,"test-code":670},"YANYAN-w":{"docs":7,"functional-code":140,"test-code":87},"dez2003":{"docs":11,"functional-code":139,"test-code":116}},"authorContributionVariance":{"ghos7ie":246492.28,"SooYap":42775.47,"YANYAN-w":6195.629,"dez2003":8486.515},"authorDisplayNameMap":{"ghos7ie":"CS2103-F12-2 LYE ..EWIS","SooYap":"CS2103-F12-2 TAN .. YAP","YANYAN-w":"CS2103-F12-2 WANG..NYAN","dez2003":"CS2103-F12-2 SNG ..IREE"}} +{"authorDailyContributionsMap":{"ghos7ie":[{"date":"2024-09-23","commitResults":[{"hash":"c6b009918091e5ad464c3a88989dded90cd75451","isMergeCommit":false,"messageTitle":"Add Remark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":283,"deletions":96},"test-code":{"insertions":238,"deletions":28}}},{"hash":"88f2f7e4af142a82e26560893321a89f5c0672ae","isMergeCommit":false,"messageTitle":"Add EOL","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":12},"test-code":{"insertions":6,"deletions":6}}},{"hash":"a7cf40025a0be1403c843cb5ef3b6d0c20c0fda1","isMergeCommit":false,"messageTitle":"Add EOL","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}},{"hash":"47f9fd4285fba79851e5b48d2e0b3875d904e9ba","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":26},"test-code":{"insertions":4,"deletions":3}}},{"hash":"98fa304bbd47f091852baa84265764847bfab89c","isMergeCommit":false,"messageTitle":"Fix Test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":63,"deletions":146}}},{"hash":"599b1f186240c7475ca668d0c736cf5e9fa50986","isMergeCommit":false,"messageTitle":"Add EOL","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}}]},{"date":"2024-10-02","commitResults":[{"hash":"cd053ecb1681755db122354ce02b30fde917539b","isMergeCommit":false,"messageTitle":"remove commits from tutorial adding","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":93,"deletions":283},"test-code":{"insertions":164,"deletions":292}}},{"hash":"d67796536c59b42ec9719c708f16f6264524bee2","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"10a85d8a82e62187490dce911a5d993c76af184f","isMergeCommit":true,"messageTitle":"Merge pull request #17 from YANYAN-w/branch-#14","messageBody":"Update yanyan\u0027s info in AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"1e03f3b1fb7db8ca52f0f8d100ba6c9a6005c447","isMergeCommit":false,"messageTitle":"Update DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":292,"deletions":86}}},{"hash":"2c2376767bc85693d356c5a85165dd19242e5447","isMergeCommit":false,"messageTitle":"Update product scope","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":2}}}]},{"date":"2024-10-04","commitResults":[{"hash":"79c124ba22b8dd44117759cce9e40c634e810c6d","isMergeCommit":false,"messageTitle":"Update readme.md and dg","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":16}}},{"hash":"4168f63358d2df6359a706471157fb52d770b8a0","isMergeCommit":true,"messageTitle":"Merge pull request #34 from ghos7ie/update-readme","messageBody":"Update readme.md and dg","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"9a6c24d18de65d9b2df2ca11b70394ec61baf364","isMergeCommit":false,"messageTitle":"Rename Person to Student all updated in main folder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":214,"deletions":448},"other":{"insertions":98,"deletions":115},"docs":{"insertions":30,"deletions":30},"test-code":{"insertions":184,"deletions":196}}},{"hash":"6bbd9d3b3b9e6600b5a8252c69ab4422a25f8f37","isMergeCommit":false,"messageTitle":"Update JUnit test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":35},"other":{"insertions":6,"deletions":6},"test-code":{"insertions":180,"deletions":547}}},{"hash":"adafe7c0765fc4d7cccc80d229c8e420e41e549f","isMergeCommit":true,"messageTitle":"Merge pull request #37 from ghos7ie/rename-remove","messageBody":"Closes #36","fileTypesAndContributionMap":{}},{"hash":"a4a990c583d755b61ce99b6cbced1a619afda0f1","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":16},"test-code":{"insertions":4,"deletions":12}}},{"hash":"12046f083772617a4d22c5242a4615fb67ab4de0","isMergeCommit":true,"messageTitle":"Merge pull request #40 from ghos7ie/rename-remove","messageBody":"Fix checkstyle","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"d345da05e2254b38577ac73a457ef8b8fcb5972e","isMergeCommit":true,"messageTitle":"Merge pull request #48 from dez2003/add-student","messageBody":"Add Student","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"c2716fbac10447c61c8bb957d0c3ea64b3fc95d8","isMergeCommit":false,"messageTitle":"Add Task class","messageBody":"Task package is kept in model, instead of group package to\naccommodate for future expansion, where students can have individual\ntasks.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":245,"deletions":1}}},{"hash":"cae1dd577beae8facf6c3dfc284460e9f630dfa0","isMergeCommit":true,"messageTitle":"Merge pull request #60 from SooYap/update-gui","messageBody":"Update GUI","fileTypesAndContributionMap":{}},{"hash":"b9411b059d2732f68a4d695a6775034088372100","isMergeCommit":false,"messageTitle":"Remove List command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":28},"test-code":{"insertions":5,"deletions":52}}},{"hash":"402e29c2e2e1127496482f47fea229a7feccd2c3","isMergeCommit":false,"messageTitle":"Use strict resolver style to prevent parsing of invalid dates","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":1}}}]}],"SooYap":[{"date":"2024-10-02","commitResults":[{"hash":"d3e8e03953102ccf1df328f842428539774e3aee","isMergeCommit":false,"messageTitle":"Update Soo Yap information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"05d96815caf1fe22b2f8ab9d7676a12f6195795d","isMergeCommit":true,"messageTitle":"Merge pull request #15 from dez2003/branch-update-aboutus","messageBody":"Update Desiree\u0027s details on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"a1d6e50bdde6cb4a287b42e56a41217063369e6d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"8a4664bdb931714dec1cc8ccbe5a05cdcee9e0fe","isMergeCommit":false,"messageTitle":"Update photo name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9ba059b91209b3ee6b594fd30ed6e2bad2d243bd","isMergeCommit":true,"messageTitle":"Merge pull request #27 from SooYap/Update-Photo","messageBody":"Update SooYap photo","fileTypesAndContributionMap":{}},{"hash":"f3c793fb8bfe5e4dc75a8896af6f0430ef16cbe3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f1fdc01a090e0a3d01b91b61f11dc91dfb168e53","isMergeCommit":true,"messageTitle":"Merge pull request #26 from ghos7ie/update-dg","messageBody":"Update DG","fileTypesAndContributionMap":{}},{"hash":"7a32368bad961eeefd60a49a80c31502763590c3","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"56ea28fc3d7ad2401f3e5bea6c1f27df5b865b89","isMergeCommit":false,"messageTitle":"Update Developer Guide with use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":130,"deletions":3}}},{"hash":"8493dbec077685550acd8907381f5df0e102fb83","isMergeCommit":true,"messageTitle":"Merge pull request #31 from SooYap/Update-DG","messageBody":"Update DG","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"086b955dc615c6a7d6244ac7604bf1ba16545d95","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f93d9778552398ed936f916dd0fdce5bdba8babd","isMergeCommit":false,"messageTitle":"Add optional group field in Student class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":4}}},{"hash":"ecacda6aba7142b9e3fa19df4aeff9181f7d8bb9","isMergeCommit":false,"messageTitle":"Fix syntax errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"13c16f4894462b5755e86dacb87f81cd30a90341","isMergeCommit":false,"messageTitle":"Add Javadoc comment to new Student constructor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":1}}},{"hash":"3bc340e59251630a928ddef20f8a93eb5b227a77","isMergeCommit":true,"messageTitle":"Merge pull request #43 from SooYap/update-student-fields","messageBody":"Update student fields","fileTypesAndContributionMap":{}},{"hash":"3f03d57b69798a0500ab7e1bc6d2549f571234c8","isMergeCommit":false,"messageTitle":"Add minimal test cases for new optional group field in Student","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0},"test-code":{"insertions":18,"deletions":2}}},{"hash":"9337c6a5a92c8e6ad06730b71fff3358f9d8f911","isMergeCommit":true,"messageTitle":"Merge pull request #44 from SooYap/update-student-fields","messageBody":"Add minimal test cases for new optional group field in Student","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"0b3c3f410d79693473b0be0ef18ec928c5eed342","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9dad478a2f32e6566900639275b3dfb4d961e5e6","isMergeCommit":false,"messageTitle":"Add Group class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":170,"deletions":5},"test-code":{"insertions":7,"deletions":3}}},{"hash":"8279f6350d0fdebe57b41a9adf61cf895713b410","isMergeCommit":false,"messageTitle":"Include a UniqueGroupList, AddGroupCommand and AddGroupCommandParser class, and update the relevant fields in ModelManager, ReadOnlyAddressBook, CliSyntax, ParserUtil, and Messages classes to support the new function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":398,"deletions":5},"test-code":{"insertions":8,"deletions":8}}}]},{"date":"2024-10-10","commitResults":[{"hash":"b9e1e15581bbd64d87ac9b1503ea10d36b59e751","isMergeCommit":false,"messageTitle":"Correct checkstyle violations","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":12}}},{"hash":"d58892412642d2de1493749c67bed311bd810b07","isMergeCommit":false,"messageTitle":"Update test cases to cover the newly added fields","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":30,"deletions":1}}},{"hash":"3f26715ce96b116a99afaa91735ccb5123c96f02","isMergeCommit":false,"messageTitle":"Correct test checkstyle violations","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":3}}},{"hash":"f3dd881071dee4c669969732b75b26764f80fc1e","isMergeCommit":false,"messageTitle":"Implement storage saving functionality for adding groups","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":100,"deletions":3}}},{"hash":"9c0fabac77ca948c477e4c6dda7483877650b6d3","isMergeCommit":false,"messageTitle":"Fix error message which displays upon user entering an invalid group name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":7}}},{"hash":"9394f64353154b81d858311cf0897dcd759bbb70","isMergeCommit":false,"messageTitle":"Update JUnit tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":2},"test-code":{"insertions":421,"deletions":0}}},{"hash":"80814164b076741d1d0c4b40c88d27fe649fceaf","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"438dc11a07fa9b0993d49574fc10007f4abd7bf9","isMergeCommit":true,"messageTitle":"Merge branch \u0027create-group-class\u0027","messageBody":"# Conflicts:\n#\tsrc/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json\n#\tsrc/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/logic/commands/CommandTestUtil.java\n","fileTypesAndContributionMap":{}},{"hash":"7d0a0886c8a39544e0d50d0d1ecf285cab98c3e3","isMergeCommit":true,"messageTitle":"Merge pull request #52 from SooYap/master","messageBody":"Add Student and Add Group Functionality","fileTypesAndContributionMap":{}},{"hash":"4ae35a31cf3b65762c3e6025aee99e9e573fe372","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-delete-student","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fed9d9d637af7565a8062429c51bc67377191eae","isMergeCommit":true,"messageTitle":"Merge pull request #49 from YANYAN-w/branch-delete-student","messageBody":"Refactored DeleteCommand to DeleteStudentCommand","fileTypesAndContributionMap":{}},{"hash":"bacf4fba1d6a4ba1b66386d77fb4e6c696efc7c5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"60698b9cfabee2b27e6e99943696fcc329badc88","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":32}}}]},{"date":"2024-10-11","commitResults":[{"hash":"bd6aaaebad06b381aaa107c03b5b9bf4956d296b","isMergeCommit":false,"messageTitle":"Fix JUnit test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":120},"other":{"insertions":8,"deletions":7},"test-code":{"insertions":20,"deletions":139}}},{"hash":"c1a947915ae8e986c1b731c2979f6f997b6ddefc","isMergeCommit":true,"messageTitle":"Merge pull request #53 from SooYap/remove-current-bugs","messageBody":"Remove current bugs","fileTypesAndContributionMap":{}},{"hash":"c5ea404182fefb8b740fdcca6b71f241662c035f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"882d49fd9e7a0acd4e9899d12e4abaac68ce7e9b","isMergeCommit":false,"messageTitle":"Add and update more test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":3},"test-code":{"insertions":52,"deletions":13}}}]},{"date":"2024-10-12","commitResults":[{"hash":"3b57bbc5d044907a1771d52f308b229400f1ae1f","isMergeCommit":false,"messageTitle":"Update JUnit test cases and fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":22},"test-code":{"insertions":154,"deletions":10}}},{"hash":"d8894bd12b37c21020171f0045958ce3f2861ca1","isMergeCommit":false,"messageTitle":"Fix more checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"f23d8880c0d5f397da149874d424e51d6b62af42","isMergeCommit":true,"messageTitle":"Merge pull request #57 from SooYap/update-more-test-cases","messageBody":"Update more test cases","fileTypesAndContributionMap":{}},{"hash":"a652975cb9ca4c675444e592120a8e75b5ee3408","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"78cebfbff2eea62f41a32ca8077287acbe19cfeb","isMergeCommit":false,"messageTitle":"Create placeholder element to display group list and create State class to reflect different GUI display states","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":271,"deletions":13},"other":{"insertions":4,"deletions":4}}}]},{"date":"2024-10-13","commitResults":[{"hash":"5f1e1152f1b0d18a241b2d31b0561833c89c44d9","isMergeCommit":false,"messageTitle":"Update GUI code to accomodate viewing of groups","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":189,"deletions":15},"other":{"insertions":6,"deletions":1}}},{"hash":"fe452cc3d97bc3c02bbd22fe0cb2312da5b0ed7f","isMergeCommit":true,"messageTitle":"Merge pull request #66 from SooYap/update-gui","messageBody":"Update GUI code to accomodate viewing of groups","fileTypesAndContributionMap":{}},{"hash":"db99ee39e041313a74af5e0367b9674f72234d19","isMergeCommit":false,"messageTitle":"Remove ListCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":28},"test-code":{"insertions":0,"deletions":25}}},{"hash":"13a542e06b24a16af5b378d9ffc381d2a91e134a","isMergeCommit":false,"messageTitle":"Change command for listing students","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"549d1e1589977a881d4263cc3d1c24246d10a9fc","isMergeCommit":true,"messageTitle":"Merge pull request #67 from SooYap/update-gui","messageBody":"Update gui","fileTypesAndContributionMap":{}},{"hash":"8936d2615b016e5f8c3677cf5ef4297675d91638","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f8c64fee3b048b209a728aa52218b1ee8b5a7894","isMergeCommit":true,"messageTitle":"Merge pull request #62 from ghos7ie/task-class","messageBody":"Add Task class","fileTypesAndContributionMap":{}},{"hash":"800af6dfd41bf73b13a58f21b5e6e0adecaeaa47","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103-F12-2/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ef178661a412fe862f9c528de85b81e856a2c9ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027remove-list-command\u0027","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/parser/AddressBookParser.java\n#\tsrc/test/java/seedu/address/logic/LogicManagerTest.java\n#\tsrc/test/java/seedu/address/logic/commands/ListCommandTest.java\n","fileTypesAndContributionMap":{}},{"hash":"7565721ba8a47a1ea2bbe3ee65daa5cf47520562","isMergeCommit":true,"messageTitle":"Merge pull request #68 from SooYap/update-gui-list-tasks","messageBody":"Update gui list tasks","fileTypesAndContributionMap":{}}]}],"YANYAN-w":[{"date":"2024-10-02","commitResults":[{"hash":"f02fe3b9de4b9ab7e6f73d58fa17286a11a6cde1","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"fa6e8ff4f450ce88aaa6fcc798d9046273ef2303","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":2}}},{"hash":"7a45d6c21a38d1f44c595d5c2451f25506ed9778","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-lewis-aboutus","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"53f4d21ace3136fee65e764e3746a3d8c1796a38","isMergeCommit":true,"messageTitle":"Merge pull request #18 from ghos7ie/update-lewis-aboutus","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"bd338ec5ace4e3d80a50c54181fdf481a72e527c","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":3}}},{"hash":"9116dedd5e4ff95ed3aa78f6572f9102a1d0887c","isMergeCommit":true,"messageTitle":"Merge pull request #23 from YANYAN-w/branch-A","messageBody":"Update README.md","fileTypesAndContributionMap":{}},{"hash":"5b59b1f35b0cb35df6ff182a50b778abf89a6927","isMergeCommit":true,"messageTitle":"Merge pull request #25 from YANYAN-w/branch-A","messageBody":"Update README and Ui image","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"7b08e60b9b674e8360c1521962ee25c8643769a5","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":6}}},{"hash":"7fcccd8919051b2d02eaf64afbec9a8338a0d962","isMergeCommit":true,"messageTitle":"Merge pull request #28 from YANYAN-w/branch-A","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"e805953fc4b098faa77b871a482c51c2db5d111f","isMergeCommit":false,"messageTitle":"refactored DeleteCommand to DeleteStudentCommand, updated the test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":258,"deletions":27},"test-code":{"insertions":98,"deletions":4}}}]},{"date":"2024-10-10","commitResults":[{"hash":"14c9b89793a2054cd6251371675cccd0ac9ea720","isMergeCommit":true,"messageTitle":"Merge branch \u0027create-group-class\u0027 of https://github.com/SooYap/tp into SooYap-create-group-class","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"81597ee6c0a131e58867812a9dcef96f02cc8137","isMergeCommit":true,"messageTitle":"Merge branch \u0027SooYap-create-group-class\u0027","messageBody":"","fileTypesAndContributionMap":{}}]}],"dez2003":[{"date":"2024-10-02","commitResults":[{"hash":"cef679ad04a1d10e3d0863011036ce737c5c8799","isMergeCommit":false,"messageTitle":"Update Desiree\u0027s details on AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":15}}},{"hash":"ddf4bc2806d8c4627280b0e07bd4378734af57a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Update-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"6f9f87d4462c06013b2831c09c3fadc80a95ac2b","isMergeCommit":true,"messageTitle":"Merge pull request #16 from SooYap/Update-AboutUs","messageBody":"Update Soo Yap information","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"3252f23ad23eea007cd78c6b393f0b42ce693a6d","isMergeCommit":false,"messageTitle":"Update site-wide settings using MarkBind","messageBody":"Renamed AB-3 with T_Assistant across all site pages, and removed\nplaceholder in AboutUs page.\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":17}}},{"hash":"153915705ae5b94ab7738efb0c5c1d17b6b957ae","isMergeCommit":true,"messageTitle":"Merge pull request #32 from dez2003/branch-B","messageBody":"Update site-wide settings using MarkBind","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"682f5c7ab6bea03e164621ec08b10136e98572e1","isMergeCommit":false,"messageTitle":"Add studentNumber field to Student class","messageBody":"The Student class doesn\u0027t have a student number field, which is\nconsidered important information to have for tutors to uniquely\nidentify each student.\n\nLet\u0027s add a student number field and update other classes\nwhere necessary.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":6},"test-code":{"insertions":14,"deletions":1}}},{"hash":"cbce0f810453ec0ddc3557d0af6db977e7b4c666","isMergeCommit":false,"messageTitle":"Update Parser and AddCommand and its related classes","messageBody":"The parser and add command doesn\u0027t take into account the new argument\nstudent number when adding a new student to the system since it was a\nnew field added for Student class.\n\nLet\u0027s\n* add the student number prefix and rename the student name prefix\n* add the argument student number to AddCommand\n* implement the prefixes into the parser, command, and test classes\n* rename the command word to \"add_student\"\n","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":22},"test-code":{"insertions":39,"deletions":22}}},{"hash":"3857e0df83268a63b54fc15bbb288750f501a05d","isMergeCommit":false,"messageTitle":"Modify GUI to show student number","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":10},"test-code":{"insertions":6,"deletions":7}}},{"hash":"c7cb20619af3ca4d58fe8824be5ff5c4bbb364d2","isMergeCommit":false,"messageTitle":"Refactor AddCommand class to AddStudentCommand","messageBody":"The class name AddCommand is too general since there\u0027ll be another\nfeature that will be adding groups.\n\nTo make the command more specific and easier to understand, let\u0027s\nrename the class name to AddStudentCommand and rename other related\nclass\u0027 names.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":38,"deletions":38},"test-code":{"insertions":8,"deletions":8}}},{"hash":"016be2c20c514ed4812e66d29d9dea9d3eaaeef8","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":17,"deletions":8},"test-code":{"insertions":2,"deletions":1}}},{"hash":"28e2c5b69856aa5e51a51930440170c2adeec41e","isMergeCommit":false,"messageTitle":"Add JavaDoc comment to StudentNumber class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"cfdaba6eb75d19c6033f2fbab8b7a6b4a956b76c","isMergeCommit":false,"messageTitle":"Fix more checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":13,"deletions":6}}}]},{"date":"2024-10-10","commitResults":[{"hash":"2b9de41f0ce9384333acf6a714b2e8badcb48d5b","isMergeCommit":false,"messageTitle":"Update code to pass all tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":9},"test-code":{"insertions":52,"deletions":31}}}]}]},"authorFileTypeContributionMap":{"ghos7ie":{"docs":325,"functional-code":499,"test-code":278},"SooYap":{"docs":134,"functional-code":1179,"test-code":670},"YANYAN-w":{"docs":7,"functional-code":140,"test-code":87},"dez2003":{"docs":11,"functional-code":139,"test-code":116}},"authorContributionVariance":{"ghos7ie":237056.31,"SooYap":42073.4,"YANYAN-w":5950.9844,"dez2003":8160.0835},"authorDisplayNameMap":{"ghos7ie":"CS2103-F12-2 LYE ..EWIS","SooYap":"CS2103-F12-2 TAN .. YAP","YANYAN-w":"CS2103-F12-2 WANG..NYAN","dez2003":"CS2103-F12-2 SNG ..IREE"}} diff --git a/AY2425S1-CS2103T-F13-2_tp_master/authorship.json b/AY2425S1-CS2103T-F13-2_tp_master/authorship.json index 1ded9a53..e3893e1d 100644 --- a/AY2425S1-CS2103T-F13-2_tp_master/authorship.json +++ b/AY2425S1-CS2103T-F13-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Team: CS2103T-F13-2","lastModifiedDate":"2024-09-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"* This is **our team\u0027s project for CS2103T Software Engineering (SE) Module**.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"NgZiXin"},"content":"* The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details. Our goals are as follows:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"NgZiXin"},"content":" - Write code of **good coding quality** that **follows SOLID principles**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":" - Provide **reasonable level of user and developer documentation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":" - Develop code base with **good software engineering practices and workflows**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":"* Our application is named `Address Book Command Line Interface` (`ABCLI` for short) as it is an address book that is operated primarily through a command line interface.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":"* We have tailored our application specifically for Real Estate Agents","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"* For the detailed documentation of this project, see the **[ABCLI Product Website](https://ay2425s1-cs2103t-f13-2.github.io/tp/)**.","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"NgZiXin":9,"-":5}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg).","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":"### Ng Zi Xin","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"\u003cimg src\u003d\"images/ngzixin.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":"[[github](https://github.com/ngzixin)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":"[[portfolio](team/ngzixin.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":"* Role: Code Quality Checker","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"NgZiXin"},"content":"* Responsibilities: Check Code Quality","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ylchin"},"content":"### Chin Yi Ling","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ylchin"},"content":"\u003cimg src\u003d\"images/ylchin.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ylchin"},"content":"[[github](https://github.com/ylchin)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ylchin"},"content":"[[portfolio](team/ylchin.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ylchin"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ylchin"},"content":"* Responsibilities: Project deliverables","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"CreditableX"},"content":"* ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Solomon0519"},"content":"### Ng Eswen","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Solomon0519"},"content":"\u003cimg src\u003d\"images/solomon0519.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Solomon0519"},"content":"[[github](https://github.com/Solomon0519)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Solomon0519"},"content":"[[portfolio](team/Eswen.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Solomon0519"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Solomon0519"},"content":"* Responsiblities: Check proper documentation","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"KennyLewi"},"content":"### Kenny Lewi","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"KennyLewi"},"content":"\u003cimg src\u003d\"images/kennylewi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"KennyLewi"},"content":"[[github](http://github.com/kennylewi)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"KennyLewi"},"content":"[[portfolio](team/kennylewi.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"KennyLewi"},"content":"* Role: Testing","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"KennyLewi"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"CreditableX"},"content":"### Yiow Meng Loong","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"CreditableX"},"content":"\u003cimg src\u003d\"images/creditablex.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"CreditableX"},"content":"[[github](http://github.com/creditablex)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"CreditableX"},"content":"[[portfolio](team/creditablex.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"CreditableX"},"content":"* Responsibilities: Lead Team","lastModifiedDate":"2024-09-25","isFullCredit":false}],"authorContributionMap":{"Solomon0519":6,"CreditableX":6,"KennyLewi":6,"ylchin":6,"NgZiXin":6,"-":29}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"ylchin"},"content":"A real estate agent who...","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"ylchin"},"content":"* has a need to manage a significant number of client contacts","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"ylchin"},"content":"* frequently needs to track client information, such as property preferences, deal statuses, and meetings","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"ylchin"},"content":"* hopes to ensure smooth communication with clients by sending updates on listings, reminders for follow-ups, and managing appointments","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"ylchin"},"content":"**Value proposition**: Using CLI to streamline management of client contacts and communications will make it more efficient than a typical mouse/GUI driven app","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"ylchin"},"content":"|--------|---------------------------|------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | add a new client | keep track of their information |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | delete a client | remove entries that I no longer need |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | find a client by name | locate details of persons without having to go through the entire list |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | categorize clients as buyers, sellers and renters | easily filter and manage different client types |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | filter contacts by tags (e.g. `Meeting Time`, `High` or `Low Priority`) | |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | send bulk emails to groups of clients | inform them of new property listing |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | view my contacts using commands | track them better |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | collect the name, contact number and email of my clients | |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | have a meeting schedule | keep track of future meetings |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"ylchin"},"content":"| `* * * ` | user | tag clients with labels like `high priority` or `first time buyer` | prioritise my outreach efforts |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"ylchin"},"content":"| `* *` | long-term user of the app | archive old client contacts | my address book remains up-to-date without deleting past information |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"ylchin"},"content":"| `* *` | long-term user of the app | mark clients as `inactive` or `closed deal` | focus on active prospects |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"ylchin"},"content":"| `* *` | user | store notes about clients\u0027 property preferences | tailor property recommendations to their needs |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"ylchin"},"content":"| `* *` | user | set reminders for client follow-ups | don\u0027t miss important communications |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"ylchin"},"content":"| `* *` | user | group clients by location preferences | easily send property updates |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"ylchin"},"content":"| `* *` | user | track status of property deals for each client (e.g. `interested`, `offer made`, `contract signed`) | stay organised |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"ylchin"},"content":"| `* *` | long-term user of the app | log the last interaction date with the client | maintain regular communication |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"ylchin"},"content":"| `* *` | expert user | export my contact list to Excel or CSV | share it with colleagues or for reporting purposes |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"ylchin"},"content":"| `* *` | expert user | import contacts from my phone or other databases | quickly build by address book |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"ylchin"},"content":"| `* *` | user | add notes to client interactions | capture important details discussed in meetings or phone calls |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"ylchin"},"content":"| `* *` | user | set a follow-up frequency for each client | stay in regular contact |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"ylchin"},"content":"| `* *` | user | track a client\u0027s viewing history | know which client have been shown to which property |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"ylchin"},"content":"| `* *` | user | filter clients by their buying timelines (e.g. immediate, next 5 months) | focus on urgent leads |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"ylchin"},"content":"| `* *` | user | set up reminders for key seller-related milestones (e.g. contract expiration, price reduction discussions) | never miss an important deadline |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"ylchin"},"content":"| `* *` | user | track client communication preferences | engage them through their preferred channels |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"ylchin"},"content":"| `* *` | user | generate a visual itmeline of a property\u0027s selling process | easily communicate progress to sellers |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"ylchin"},"content":"| `* *` | user | collect budget preference, neighbourhood preference and property of my buyer and seller | |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"ylchin"},"content":"| `*` | user | receive notifications when it\u0027s time to follow up with a client | not forget |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"ylchin"},"content":"| `*` | user | assign a lead source to each client, e.g. referral, open house, website | know where my business is coming from |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"ylchin"},"content":"| `*` | real estate agent | schedule and track open house events | ensure smooth operations and follow up with attendees |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"ylchin"},"content":"| `*` | user | monitor competing listings in the same area | adjust pricing and marketing strategies accordingly |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"ylchin"},"content":"| `*` | user | track commission details for each property sale | keep accurate financial records |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"ylchin"},"content":"| `*` | user | generate reports on the number of leads genrated per listing | show sellers the interest their property is receiving |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"ylchin"},"content":"| `*` | user | manage and log referral partner interactions (e.g. contractors, photographers) | maintain strong professional relationships |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"ylchin"},"content":"| `*` | user | send property performance updates to sellers (e.g. number of views, showings) | keep them informed and engaged |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"ylchin"},"content":"| `*` | user | track which clients were referre by past clients | send personalised appreciation messages and foster long-term relationships |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"Solomon0519"},"content":"(For all use cases below, the **System** is `ABCLI` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"Solomon0519"},"content":"\u003cdetails\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"Solomon0519"},"content":" \u003csummary\u003e\u003cb\u003eUse Case 1: Adding a contact\u003c/b\u003e\u003c/summary\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"Solomon0519"},"content":"1. User requests to add a contact","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"Solomon0519"},"content":"2. ABCLI adds the contact","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"Solomon0519"},"content":"3. ABCLI shows a success message","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"Solomon0519"},"content":"4. ABCLI shows the updated list of contacts on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"Solomon0519"},"content":"- Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"Solomon0519"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"Solomon0519"},"content":"* 1a. The contact format is invalid","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"Solomon0519"},"content":" * 1a1. ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"Solomon0519"},"content":" * Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"Solomon0519"},"content":"\u003c/details\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"Solomon0519"},"content":"\u003cdetails\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"Solomon0519"},"content":" \u003csummary\u003e\u003cb\u003eUse Case 2: Deleting a contact\u003c/b\u003e\u003c/summary\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"Solomon0519"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"Solomon0519"},"content":"1. User requests to list contacts","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"Solomon0519"},"content":"2. ABCLI shows the list of contacts on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"Solomon0519"},"content":"3. User requests to delete a specific contact","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"Solomon0519"},"content":"4. ABCLI deletes the contact","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Solomon0519"},"content":"5. ABCLI shows a success message","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"Solomon0519"},"content":"6. ABCLI shows the updated list of contacts on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"Solomon0519"},"content":" ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"Solomon0519"},"content":"- Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"Solomon0519"},"content":"- 3a. The index for deletion is not a positive whole number","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Solomon0519"},"content":" - 3a1. ABCLI shows an error message","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Solomon0519"},"content":"- 3b. The index for deletion is out of range","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"Solomon0519"},"content":" - 3b1. ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"Solomon0519"},"content":"\u003c/details\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"Solomon0519"},"content":"\u003cdetails\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Solomon0519"},"content":" \u003csummary\u003e\u003cb\u003eUse Case 3: Adding a meetup\u003c/b\u003e\u003c/summary\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Solomon0519"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Solomon0519"},"content":"1. User requests to add a meetup","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Solomon0519"},"content":"2. ABCLI adds the meetup","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Solomon0519"},"content":"3. ABCLI shows a success message","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Solomon0519"},"content":"4. ABCLI shows the updated list of meetups on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Solomon0519"},"content":"- Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Solomon0519"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"Solomon0519"},"content":"- 1a. The command is missing a name","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"Solomon0519"},"content":" - 1a1. ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"Solomon0519"},"content":" ","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"Solomon0519"},"content":"- 1b. The command is missing a flag","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"Solomon0519"},"content":" - 1b1 ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"Solomon0519"},"content":"\u003c/details\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"Solomon0519"},"content":"\u003cdetails\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"Solomon0519"},"content":" \u003csummary\u003e\u003cb\u003eUse Case 4: Viewing contacts\u003c/b\u003e\u003c/summary\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"Solomon0519"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"Solomon0519"},"content":"1. User requests to view all contacts","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"Solomon0519"},"content":"2. ABCLI shows the list of contacts on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"Solomon0519"},"content":"- Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"Solomon0519"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"Solomon0519"},"content":"- 1a. Viewing buyer and seller contacts","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"Solomon0519"},"content":" - 1a1. User requests to view buyer contacts","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"Solomon0519"},"content":" - 1a2. ABCLI shows the list of contacts of buyers on its interface","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"Solomon0519"},"content":" - 1a3. User requests to view seller contacts","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"Solomon0519"},"content":" - 1a4. ABCLI shows the list of contacts of sellers on its interface","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"Solomon0519"},"content":" ","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"Solomon0519"},"content":"- 1b. t/ flag has invalid contact type","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"Solomon0519"},"content":" - 1b1. ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"Solomon0519"},"content":"\u003c/details\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"CreditableX"},"content":"### Non-Functional Requirements","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should be a result of evolving/enhancing/morphing the given codebase.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should be targeting users who can type fast and prefer typing over other means of input.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should be for a single user.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"CreditableX"},"content":"1. ABCLI needs to be developed in a breadth-first incremental manner over the project duration.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"CreditableX"},"content":"1. ABCLI\u0027s data should be stored locally and should be in a human editable text file.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"CreditableX"},"content":"1. ABCLI cannot use a DBMS to store data.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should follow the Object-oriented paradigm primarily.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should work on the Windows, Linux, and OS-X platforms.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should work on a computer that has version 17 of Java.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should work without requiring an installer.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should not depend on your own remote server.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"CreditableX"},"content":"1. The use of third-party frameworks/libraries/services is allowed but only if they are free, open-source, and have permissive license terms and do not require any installation by users and do not violate other constraints.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"CreditableX"},"content":"1. The GUI should work well for standard screen resolutions 1920x1080 and higher and for screen scales 100% and 125%. In addition, the GUI should be usable for resolutions 1280x720 and higher, and for screen scales 150%.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"CreditableX"},"content":"1. ABCLI has to be packaged into a single JAR file.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"CreditableX"},"content":"### Glossary","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"CreditableX"},"content":"1. **ABCLI** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"CreditableX"},"content":"Our product name.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"CreditableX"},"content":"1. **CLI** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"CreditableX"},"content":"The command line interface is a way to interact with a computer by typing text commands instead of using a mouse to click on icons.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"CreditableX"},"content":"1. **Command Line** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"CreditableX"},"content":"A text box where you enter commands.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"CreditableX"},"content":"1. **Flag** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"CreditableX"},"content":"In our context, a flag is something preceded by a /, but is not the initial command. e.g in `add n/NAME`, `n/` is a flag but `add` is not.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"CreditableX"},"content":"1. **GUI** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"CreditableX"},"content":"Graphical user interface. The screen you see when opening the application.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"CreditableX"},"content":"1. [**Java**](https://www.java.com/en/) ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"CreditableX"},"content":"A programming language.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"CreditableX"},"content":"1. **Parameter** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"CreditableX"},"content":"A value that you need to provide for the command to work. e.g in `add n/NAME`, `NAME` is a parameter.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"CreditableX"},"content":"1. [**Windows**](https://en.wikipedia.org/wiki/Microsoft_Windows) ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"CreditableX"},"content":"An operating system.","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"Solomon0519":72,"CreditableX":53,"ylchin":42,"NgZiXin":1,"-":362}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"Address Book Command Line Interface (ABCLI) is a **desktop app made specially for Real Estate Agents to manage contacts and is optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you are a real estate agent and can type fast, ABCLI can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":"2. Download the latest `.jar` file from [here](https://github.com/AY2425S1-CS2103T-F13-2/tp/releases/).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your application.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"NgZiXin"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar abcli.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"NgZiXin"},"content":"5. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 u/buyer` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":"* Items in angle brackets represent input choices.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"NgZiXin"},"content":" e.g `t/\u003cbuyer,seller\u003e` can be used as `t/buyer` or as `t/seller` only.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"NgZiXin"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS u/\u003cbuyer,seller\u003e [t/TAG]…​`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"NgZiXin"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 u/buyer`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"NgZiXin"},"content":"* `add n/Betsy Crowe t/friend u/seller e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"NgZiXin"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e:hourglass_flowing_sand: **Expected change in release v1.2**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"NgZiXin"},"content":"You will be able to view all people or filter by your contact type in the address book.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"NgZiXin"},"content":"Format: `view [t/\u003cbuyer,seller\u003e]`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"NgZiXin"},"content":"Examples:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"NgZiXin"},"content":"* `view t/buyer`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"NgZiXin"},"content":"* `view`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"NgZiXin"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"NgZiXin"},"content":"### Meet up `[coming in v1.2]`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"NgZiXin"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e:hourglass_flowing_sand: **Expected feature in release v1.2**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"NgZiXin"},"content":"You will be able to schedule a meet-up event with your contacts.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"NgZiXin"},"content":"Format: `meetup n/NAME i/INFO`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"NgZiXin"},"content":"Examples:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"NgZiXin"},"content":"* `meetup n/kennylewi i/Property viewing on saturday`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"NgZiXin"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"NgZiXin"},"content":"\u003cbr\u003e_More features coming soon ..._","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"NgZiXin":34,"-":187}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"NgZiXin"},"content":"title: \"ABCLI\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":"repository: \"AY2425S1-CS2103T-F13-2/tp\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"NgZiXin":2,"-":13}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"NgZiXin"},"content":" content: \"ABCLI\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12","isFullCredit":false}],"authorContributionMap":{"NgZiXin":1,"-":294}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"title: ABCLI","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":"**ABCLI is a desktop application specially made for Real Estate Agents for managing their clients\u0027 contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":"* If you are interested in using ABCLI, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"* If you are interested about developing ABCLI, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"NgZiXin":6,"-":14}},{"path":"docs/team/Eswen.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Solomon0519"},"content":"Hello World","lastModifiedDate":"2024-09-25","isFullCredit":false}],"authorContributionMap":{"Solomon0519":1}},{"path":"docs/team/creditablex.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"CreditableX"},"content":"### hello ###","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"CreditableX"},"content":"good morning!!!!","lastModifiedDate":"2024-09-25","isFullCredit":false}],"authorContributionMap":{"CreditableX":3}},{"path":"docs/team/kennylewi.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"KennyLewi"},"content":"---","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"KennyLewi"},"content":"layout: page","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"KennyLewi"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"KennyLewi"},"content":"---","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"KennyLewi"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"KennyLewi"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"KennyLewi"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"KennyLewi"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"KennyLewi"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"KennyLewi"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"KennyLewi"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"KennyLewi"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"KennyLewi"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"KennyLewi"},"content":"* **Project management**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"KennyLewi"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"KennyLewi"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"KennyLewi"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"KennyLewi"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"KennyLewi"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"KennyLewi"},"content":" * User Guide:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"KennyLewi"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"KennyLewi"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"KennyLewi"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"KennyLewi"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"KennyLewi"},"content":"* **Community**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"KennyLewi"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"KennyLewi"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"KennyLewi"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"KennyLewi"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"KennyLewi"},"content":"* **Tools**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"KennyLewi"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"KennyLewi"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"KennyLewi"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-25","isFullCredit":false}],"authorContributionMap":{"KennyLewi":46}},{"path":"docs/team/ngzixin.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"title: Ng Zi Xin\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"NgZiXin":1,"-":3}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"KennyLewi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"KennyLewi"},"content":" * Formats the {@code meetup} for display to the user.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"KennyLewi"},"content":" public static String format(MeetUp meetup) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"KennyLewi"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"KennyLewi"},"content":" builder.append(meetup.getName())","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"KennyLewi"},"content":" .append(\"; Info: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"KennyLewi"},"content":" .append(meetup.getInfo())","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"KennyLewi"},"content":" .append(\"; From: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"KennyLewi"},"content":" .append(meetup.getFrom())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"KennyLewi"},"content":" .append(\"; To: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"KennyLewi"},"content":" .append(meetup.getTo());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"KennyLewi"},"content":" return builder.toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"KennyLewi":15,"-":51}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":" + PREFIX_PERSON_TYPE + \"buyer \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"NgZiXin":2,"-":84}},{"path":"src/main/java/seedu/address/logic/commands/AddMeetUpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KennyLewi"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"KennyLewi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INFO;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"KennyLewi"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"KennyLewi"},"content":" * Adds a meetup to the address book.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"KennyLewi"},"content":"public class AddMeetUpCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"KennyLewi"},"content":" public static final String COMMAND_WORD \u003d \"addm\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"KennyLewi"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a meetup to the address book. \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"KennyLewi"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_INFO + \"MEETUP INFO \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_FROM + \"YYYY-MM-DD HH:mm \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_TO + \"YYYY-MM-DD HH:mm \\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"KennyLewi"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_NAME + \"Discuss work plans \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_INFO + \"Meet with Eswen to discuss the March Project \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_FROM + \"2024-02-03 14:00 \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_TO + \"2024-02-03 15:30 \";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"KennyLewi"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New Meetup added: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"KennyLewi"},"content":" private final MeetUp toAdd;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"KennyLewi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"KennyLewi"},"content":" * Creates an AddMeetUpCommand to add the specified {@code MeetUp}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"KennyLewi"},"content":" public AddMeetUpCommand(MeetUp meetup) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"KennyLewi"},"content":" requireNonNull(meetup);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"KennyLewi"},"content":" toAdd \u003d meetup;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"KennyLewi"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"KennyLewi"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"KennyLewi"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"KennyLewi"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"KennyLewi"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"KennyLewi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"KennyLewi"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"KennyLewi"},"content":" return true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"KennyLewi"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"KennyLewi"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"KennyLewi"},"content":" return false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"KennyLewi"},"content":" AddMeetUpCommand otherAddMeetupCommand \u003d (AddMeetUpCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"KennyLewi"},"content":" return toAdd.equals(otherAddMeetupCommand.toAdd);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"KennyLewi"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"KennyLewi"},"content":" public String toString() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"KennyLewi"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"KennyLewi"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"KennyLewi"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"KennyLewi"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"KennyLewi":73}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"NgZiXin"},"content":" PersonType updatedPersonType \u003d personToEdit.getPersonType(); // edit command does not allow editing personType","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"NgZiXin"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedPersonType, updatedTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"NgZiXin":3,"-":241}},{"path":"src/main/java/seedu/address/logic/commands/ViewCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ylchin"},"content":"public class ViewCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ylchin"},"content":" public static final String COMMAND_WORD \u003d \"view\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ylchin"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Viewing all persons\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ylchin":3,"-":21}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" PREFIX_PERSON_TYPE, PREFIX_TAG);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"NgZiXin"},"content":" PREFIX_PERSON_TYPE)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" PREFIX_PERSON_TYPE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"NgZiXin"},"content":" PersonType personType \u003d ParserUtil.parsePersonType(argMultimap.getValue(PREFIX_PERSON_TYPE).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" Person person \u003d new Person(name, phone, email, address, personType, tagList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"NgZiXin":10,"-":57}},{"path":"src/main/java/seedu/address/logic/parser/AddMeetUpCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KennyLewi"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INFO;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"KennyLewi"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"KennyLewi"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"KennyLewi"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.commands.AddMeetUpCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"KennyLewi"},"content":" * Parses input arguments and creates a new AddMeetUpCommand object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"KennyLewi"},"content":"public class AddMeetUpCommandParser implements Parser\u003cAddMeetUpCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"KennyLewi"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"KennyLewi"},"content":" * Parses the given {@code String} of arguments in the context of the AddMeetUpCommand","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"KennyLewi"},"content":" * and returns an AddMeetUpCommand object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"KennyLewi"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"KennyLewi"},"content":" public AddMeetUpCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"KennyLewi"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"KennyLewi"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_INFO, PREFIX_FROM, PREFIX_TO);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"KennyLewi"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_INFO, PREFIX_FROM, PREFIX_TO)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"KennyLewi"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"KennyLewi"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMeetUpCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"KennyLewi"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_INFO, PREFIX_FROM, PREFIX_TO);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"KennyLewi"},"content":" String name \u003d argMultimap.getValue(PREFIX_NAME).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"KennyLewi"},"content":" String info \u003d argMultimap.getValue(PREFIX_INFO).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"KennyLewi"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"KennyLewi"},"content":" LocalDateTime from \u003d LocalDateTime.parse(argMultimap.getValue(PREFIX_FROM).get(), formatter);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"KennyLewi"},"content":" LocalDateTime to \u003d LocalDateTime.parse(argMultimap.getValue(PREFIX_TO).get(), formatter);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"KennyLewi"},"content":" MeetUp meetUp \u003d new MeetUp(name, info, from, to);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"KennyLewi"},"content":" return new AddMeetUpCommand(meetUp);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"KennyLewi"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"KennyLewi"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"KennyLewi"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"KennyLewi"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"KennyLewi"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"KennyLewi"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"KennyLewi":56}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.commands.AddMeetUpCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ylchin"},"content":" case ViewCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ylchin"},"content":" return new ViewCommand();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"KennyLewi"},"content":" case AddMeetUpCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"KennyLewi"},"content":" return new AddMeetUpCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"KennyLewi":4,"ylchin":3,"-":83}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":" public static final Prefix PREFIX_PERSON_TYPE \u003d new Prefix(\"u/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"KennyLewi"},"content":" public static final Prefix PREFIX_INFO \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"KennyLewi"},"content":" public static final Prefix PREFIX_FROM \u003d new Prefix(\"from/\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":" public static final Prefix PREFIX_TO \u003d new Prefix(\"to/\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"KennyLewi":3,"NgZiXin":1,"-":15}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"NgZiXin"},"content":" * Parses a {@code String personType} into an {@code PersonType}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"NgZiXin"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"NgZiXin"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"NgZiXin"},"content":" * @throws ParseException if the given {@code personType} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"NgZiXin"},"content":" public static PersonType parsePersonType(String personType) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"NgZiXin"},"content":" requireNonNull(personType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"NgZiXin"},"content":" String trimmedPersonType \u003d personType.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"NgZiXin"},"content":" if (!PersonType.isValidType(trimmedPersonType)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"NgZiXin"},"content":" throw new ParseException(PersonType.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"NgZiXin"},"content":" return new PersonType(trimmedPersonType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"NgZiXin":16,"-":124}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.schedule.Schedule;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"NgZiXin"},"content":" private final FilteredList\u003cSchedule\u003e filteredSchedules \u003d null; //TODO","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"NgZiXin":2,"-":148}},{"path":"src/main/java/seedu/address/model/meetup/MeetUp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgZiXin"},"content":"package seedu.address.model.meetup;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"KennyLewi"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":" * Represents a Meetup in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"public class MeetUp { //TODO","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":" // Identity fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":" private final String name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"KennyLewi"},"content":" private final String info;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"KennyLewi"},"content":" private final LocalDateTime from;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"KennyLewi"},"content":" private final LocalDateTime to;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"NgZiXin"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"KennyLewi"},"content":" public MeetUp(String name, String info, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"KennyLewi"},"content":" requireAllNonNull(name, info, from, to);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"KennyLewi"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"KennyLewi"},"content":" this.info \u003d info;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":" this.from \u003d from;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" this.to \u003d to;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"KennyLewi"},"content":" * Returns true if both meetups have the same identity and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":" * This defines a stronger notion of equality between two meetUps.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"NgZiXin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"NgZiXin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" if (!(other instanceof MeetUp)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"NgZiXin"},"content":" MeetUp otherMeetUp \u003d (MeetUp) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"KennyLewi"},"content":" return name.equals(otherMeetUp.name)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"KennyLewi"},"content":" \u0026\u0026 info.equals(otherMeetUp.info)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"NgZiXin"},"content":" \u0026\u0026 from.equals(otherMeetUp.from)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" \u0026\u0026 to.equals(otherMeetUp.to);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"NgZiXin"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"NgZiXin"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"KennyLewi"},"content":" return Objects.hash(name, info, from, to);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"NgZiXin"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"NgZiXin"},"content":" //TODO","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"KennyLewi"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"KennyLewi"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"KennyLewi"},"content":" .add(\"info\", info)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"KennyLewi"},"content":" .add(\"from\", from)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"KennyLewi"},"content":" .add(\"to\", to)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"KennyLewi"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"KennyLewi"},"content":" public String getName() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"KennyLewi"},"content":" return this.name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"KennyLewi"},"content":" public String getInfo() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"KennyLewi"},"content":" return this.info;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"KennyLewi"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"KennyLewi"},"content":" return this.from;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"KennyLewi"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"KennyLewi"},"content":" return this.to;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"NgZiXin"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"KennyLewi":36,"NgZiXin":52}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"NgZiXin"},"content":" private final PersonType personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":" public Person(Name name, Phone phone, Email email, Address address, PersonType personType, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" requireAllNonNull(name, phone, email, address, tags, personType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" this.personType \u003d personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"NgZiXin"},"content":" public PersonType getPersonType() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"NgZiXin"},"content":" return personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"NgZiXin"},"content":" .add(\"type\", personType)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"NgZiXin":9,"-":115}},{"path":"src/main/java/seedu/address/model/person/PersonType.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgZiXin"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":" * Represents a Person\u0027s type in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"NgZiXin"},"content":"public class PersonType {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":" * Only types allowed","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":" public enum Type {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":" BUYER,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":" SELLER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"NgZiXin"},"content":" return this.name().toLowerCase();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"NgZiXin"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"User type must be specified as only \\\"buyer\\\" or \\\"seller\\\".\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"NgZiXin"},"content":" public static final String VALIDATION_REGEX \u003d \"[a-z]+\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"NgZiXin"},"content":" public final Type value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" * Constructs a {@code PersonType}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" * @param str A valid string that can transformed to a type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"NgZiXin"},"content":" public PersonType(String str) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":" requireNonNull(str);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" checkArgument(isValidType(str), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" this.value \u003d Type.valueOf(str.toUpperCase());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"NgZiXin"},"content":" * Constructs a {@code PersonType}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"NgZiXin"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"NgZiXin"},"content":" * @param type A valid type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" public PersonType(Type type) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"NgZiXin"},"content":" requireNonNull(type);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"NgZiXin"},"content":" this.value \u003d type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"NgZiXin"},"content":" * Returns true if a given string is a valid type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" public static boolean isValidType(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"NgZiXin"},"content":" if (!test.matches(VALIDATION_REGEX)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"NgZiXin"},"content":" for (Type aType : Type.values()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":" if (aType.toString().equals(test)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"NgZiXin"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"NgZiXin"},"content":" return value.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"NgZiXin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"NgZiXin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"NgZiXin"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"NgZiXin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"NgZiXin"},"content":" if (!(other instanceof PersonType)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"NgZiXin"},"content":" PersonType otherPersonType \u003d (PersonType) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"NgZiXin"},"content":" return value.equals(otherPersonType.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"NgZiXin"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"NgZiXin"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"NgZiXin"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"NgZiXin":91}},{"path":"src/main/java/seedu/address/model/schedule/Schedule.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgZiXin"},"content":"package seedu.address.model.schedule;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"NgZiXin"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":" * Represents a Schedule in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"public class Schedule {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":" // Identity fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":" private final Person person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"NgZiXin"},"content":" private final MeetUp meetUp;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"NgZiXin"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"NgZiXin"},"content":" public Schedule(Person person, MeetUp meetUp) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"NgZiXin"},"content":" requireAllNonNull(person, meetUp);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"NgZiXin"},"content":" this.person \u003d person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"NgZiXin"},"content":" this.meetUp \u003d meetUp;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":" public Person getPerson() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" return person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" public MeetUp getMeetUp() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"NgZiXin"},"content":" return meetUp;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" * Returns true if Person is involved in this schedule.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"NgZiXin"},"content":" public boolean isPersonInvolved(Person person) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" return this.person.equals(person);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" * Returns true if MeetUp is involved in this schedule","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"NgZiXin"},"content":" public boolean isMeetupInvolved(MeetUp meetup) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"NgZiXin"},"content":" return this.meetUp.equals(meetup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"NgZiXin"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" * This defines a stronger notion of equality between two schedule.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"NgZiXin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"NgZiXin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"NgZiXin"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"NgZiXin"},"content":" if (!(other instanceof Schedule)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"NgZiXin"},"content":" Schedule otherSchedule \u003d (Schedule) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"NgZiXin"},"content":" return person.equals(otherSchedule.person)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"NgZiXin"},"content":" \u0026\u0026 meetUp.equals(otherSchedule.meetUp);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"NgZiXin"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"NgZiXin"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"NgZiXin"},"content":" return Objects.hash(person, meetUp);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"NgZiXin"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"NgZiXin"},"content":" return String.format(\"%s is scheduled for %s\", person.toString(), meetUp.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"NgZiXin"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"NgZiXin":82}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"seller\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"seller\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"NgZiXin":7,"-":60}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":" private final String personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" @JsonProperty(\"personType\") String personType,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"NgZiXin"},"content":" this.personType \u003d personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":" personType \u003d source.getPersonType().value.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"NgZiXin"},"content":" final PersonType modelPersonType \u003d new PersonType(personType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"NgZiXin"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelPersonType, modelTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"NgZiXin":7,"-":108}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"NgZiXin"},"content":" private Label personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"NgZiXin"},"content":" @FXML","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"NgZiXin"},"content":" personType.setText(person.getPersonType().value.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"NgZiXin":3,"-":59}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"NgZiXin"},"content":"#personType {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"NgZiXin"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"NgZiXin"},"content":" -fx-background-color: #f5182f;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"NgZiXin"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"NgZiXin"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"NgZiXin"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"NgZiXin"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"NgZiXin"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"NgZiXin"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"NgZiXin":11,"-":352}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" \u003cGridPane hgap\u003d\"7\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" \u003cLabel fx:id\u003d\"personType\" text\u003d\"$personType\" GridPane.columnIndex\u003d\"0\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":" \u003cFlowPane fx:id\u003d\"tags\" alignment\u003d\"CENTER_LEFT\" GridPane.columnIndex\u003d\"1\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"NgZiXin":4,"-":35}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_TYPE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"ylchin"},"content":" String listCommand \u003d ViewCommand.COMMAND_WORD;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ylchin"},"content":" assertCommandSuccess(listCommand, ViewCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"NgZiXin"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + PERSON_TYPE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"ylchin":3,"NgZiXin":2,"-":171}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" public static final String VALID_PERSON_TYPE_AMY \u003d \"seller\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" public static final String VALID_PERSON_TYPE_BOB \u003d \"buyer\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"NgZiXin"},"content":" public static final String PERSON_TYPE_DESC_BOB \u003d \" \" + PREFIX_PERSON_TYPE + VALID_PERSON_TYPE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"NgZiXin"},"content":" public static final String PERSON_TYPE_DESC_AMY \u003d \" \" + PREFIX_PERSON_TYPE + VALID_PERSON_TYPE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"NgZiXin":5,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/ViewCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ylchin"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ViewCommand.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ylchin"},"content":"public class ViewCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ylchin"},"content":" assertCommandSuccess(new ViewCommand(), model, ViewCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ylchin"},"content":" assertCommandSuccess(new ViewCommand(), model, ViewCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"ylchin":4,"-":35}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_TYPE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_TYPE_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":" + ADDRESS_DESC_BOB + PERSON_TYPE_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"NgZiXin"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"NgZiXin"},"content":" + ADDRESS_DESC_BOB + PERSON_TYPE_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"NgZiXin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"NgZiXin"},"content":" PREFIX_PERSON_TYPE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"NgZiXin"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"NgZiXin"},"content":" + ADDRESS_DESC_BOB + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"NgZiXin":30,"-":172}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ylchin"},"content":" assertTrue(parser.parseCommand(ViewCommand.COMMAND_WORD) instanceof ViewCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"ylchin"},"content":" assertTrue(parser.parseCommand(ViewCommand.COMMAND_WORD + \" 3\") instanceof ViewCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"ylchin":3,"-":98}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"NgZiXin"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", type\u003d\" + ALICE.getPersonType()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"NgZiXin"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"NgZiXin":2,"-":98}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" private static final String VALID_PERSON_TYPE \u003d BENSON.getPersonType().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_PERSON_TYPE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_PERSON_TYPE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"NgZiXin"},"content":" VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"NgZiXin"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_PERSON_TYPE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"NgZiXin"},"content":" VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"NgZiXin"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_PERSON_TYPE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"NgZiXin"},"content":" VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"NgZiXin"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, invalidTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"NgZiXin":19,"-":101}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"NgZiXin"},"content":" public static final String DEFAULT_PERSON_TYPE \u003d \"buyer\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" private PersonType personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" personType \u003d new PersonType(DEFAULT_PERSON_TYPE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" personType \u003d personToCopy.getPersonType();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"NgZiXin"},"content":" * Sets the {@code PersonType} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"NgZiXin"},"content":" public PersonBuilder withPersonType(String personType) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"NgZiXin"},"content":" this.personType \u003d new PersonType(personType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"NgZiXin"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"NgZiXin"},"content":" return new Person(name, phone, email, address, personType, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"NgZiXin":14,"-":95}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" sb.append(PREFIX_PERSON_TYPE + person.getPersonType().value.toString() + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"NgZiXin":2,"-":62}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":" .withPersonType(\"seller\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" .withEmail(\"johnd@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"NgZiXin"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"NgZiXin"},"content":" .withPersonType(\"buyer\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"NgZiXin":4,"-":75}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Team: CS2103T-F13-2","lastModifiedDate":"2024-09-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"* This is **our team\u0027s project for CS2103T Software Engineering (SE) Module**.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"NgZiXin"},"content":"* The project simulates an ongoing software project for a desktop application (called _AddressBook_) used for managing contact details. Our goals are as follows:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"NgZiXin"},"content":" - Write code of **good coding quality** that **follows SOLID principles**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":" - Provide **reasonable level of user and developer documentation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":" - Develop code base with **good software engineering practices and workflows**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":"* Our application is named `Address Book Command Line Interface` (`ABCLI` for short) as it is an address book that is operated primarily through a command line interface.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":"* We have tailored our application specifically for Real Estate Agents","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"* For the detailed documentation of this project, see the **[ABCLI Product Website](https://ay2425s1-cs2103t-f13-2.github.io/tp/)**.","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"NgZiXin":9,"-":5}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg).","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":"### Ng Zi Xin","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"\u003cimg src\u003d\"images/ngzixin.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":"[[github](https://github.com/ngzixin)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":"[[portfolio](team/ngzixin.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":"* Role: Code Quality Checker","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"NgZiXin"},"content":"* Responsibilities: Check Code Quality","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ylchin"},"content":"### Chin Yi Ling","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ylchin"},"content":"\u003cimg src\u003d\"images/ylchin.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ylchin"},"content":"[[github](https://github.com/ylchin)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ylchin"},"content":"[[portfolio](team/ylchin.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ylchin"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ylchin"},"content":"* Responsibilities: Project deliverables","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"CreditableX"},"content":"* ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Solomon0519"},"content":"### Ng Eswen","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Solomon0519"},"content":"\u003cimg src\u003d\"images/solomon0519.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Solomon0519"},"content":"[[github](https://github.com/Solomon0519)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Solomon0519"},"content":"[[portfolio](team/Eswen.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Solomon0519"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Solomon0519"},"content":"* Responsiblities: Check proper documentation","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"KennyLewi"},"content":"### Kenny Lewi","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"KennyLewi"},"content":"\u003cimg src\u003d\"images/kennylewi.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"KennyLewi"},"content":"[[github](http://github.com/kennylewi)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"KennyLewi"},"content":"[[portfolio](team/kennylewi.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"KennyLewi"},"content":"* Role: Testing","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"KennyLewi"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"CreditableX"},"content":"### Yiow Meng Loong","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"CreditableX"},"content":"\u003cimg src\u003d\"images/creditablex.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"CreditableX"},"content":"[[github](http://github.com/creditablex)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"CreditableX"},"content":"[[portfolio](team/creditablex.md)]","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"CreditableX"},"content":"* Responsibilities: Lead Team","lastModifiedDate":"2024-09-25","isFullCredit":false}],"authorContributionMap":{"Solomon0519":6,"CreditableX":6,"KennyLewi":6,"ylchin":6,"NgZiXin":6,"-":29}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"ylchin"},"content":"A real estate agent who...","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"ylchin"},"content":"* has a need to manage a significant number of client contacts","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"ylchin"},"content":"* frequently needs to track client information, such as property preferences, deal statuses, and meetings","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"ylchin"},"content":"* hopes to ensure smooth communication with clients by sending updates on listings, reminders for follow-ups, and managing appointments","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"ylchin"},"content":"**Value proposition**: Using CLI to streamline management of client contacts and communications will make it more efficient than a typical mouse/GUI driven app","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"ylchin"},"content":"|--------|---------------------------|------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------|","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | add a new client | keep track of their information |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | delete a client | remove entries that I no longer need |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | find a client by name | locate details of persons without having to go through the entire list |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | categorize clients as buyers, sellers and renters | easily filter and manage different client types |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | filter contacts by tags (e.g. `Meeting Time`, `High` or `Low Priority`) | |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | send bulk emails to groups of clients | inform them of new property listing |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | view my contacts using commands | track them better |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | collect the name, contact number and email of my clients | |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"ylchin"},"content":"| `* * *` | user | have a meeting schedule | keep track of future meetings |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"ylchin"},"content":"| `* * * ` | user | tag clients with labels like `high priority` or `first time buyer` | prioritise my outreach efforts |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"ylchin"},"content":"| `* *` | long-term user of the app | archive old client contacts | my address book remains up-to-date without deleting past information |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"ylchin"},"content":"| `* *` | long-term user of the app | mark clients as `inactive` or `closed deal` | focus on active prospects |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"ylchin"},"content":"| `* *` | user | store notes about clients\u0027 property preferences | tailor property recommendations to their needs |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"ylchin"},"content":"| `* *` | user | set reminders for client follow-ups | don\u0027t miss important communications |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"ylchin"},"content":"| `* *` | user | group clients by location preferences | easily send property updates |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"ylchin"},"content":"| `* *` | user | track status of property deals for each client (e.g. `interested`, `offer made`, `contract signed`) | stay organised |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"ylchin"},"content":"| `* *` | long-term user of the app | log the last interaction date with the client | maintain regular communication |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"ylchin"},"content":"| `* *` | expert user | export my contact list to Excel or CSV | share it with colleagues or for reporting purposes |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"ylchin"},"content":"| `* *` | expert user | import contacts from my phone or other databases | quickly build by address book |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"ylchin"},"content":"| `* *` | user | add notes to client interactions | capture important details discussed in meetings or phone calls |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"ylchin"},"content":"| `* *` | user | set a follow-up frequency for each client | stay in regular contact |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"ylchin"},"content":"| `* *` | user | track a client\u0027s viewing history | know which client have been shown to which property |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"ylchin"},"content":"| `* *` | user | filter clients by their buying timelines (e.g. immediate, next 5 months) | focus on urgent leads |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"ylchin"},"content":"| `* *` | user | set up reminders for key seller-related milestones (e.g. contract expiration, price reduction discussions) | never miss an important deadline |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"ylchin"},"content":"| `* *` | user | track client communication preferences | engage them through their preferred channels |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"ylchin"},"content":"| `* *` | user | generate a visual itmeline of a property\u0027s selling process | easily communicate progress to sellers |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"ylchin"},"content":"| `* *` | user | collect budget preference, neighbourhood preference and property of my buyer and seller | |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"ylchin"},"content":"| `*` | user | receive notifications when it\u0027s time to follow up with a client | not forget |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"ylchin"},"content":"| `*` | user | assign a lead source to each client, e.g. referral, open house, website | know where my business is coming from |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"ylchin"},"content":"| `*` | real estate agent | schedule and track open house events | ensure smooth operations and follow up with attendees |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"ylchin"},"content":"| `*` | user | monitor competing listings in the same area | adjust pricing and marketing strategies accordingly |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"ylchin"},"content":"| `*` | user | track commission details for each property sale | keep accurate financial records |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"ylchin"},"content":"| `*` | user | generate reports on the number of leads genrated per listing | show sellers the interest their property is receiving |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"ylchin"},"content":"| `*` | user | manage and log referral partner interactions (e.g. contractors, photographers) | maintain strong professional relationships |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"ylchin"},"content":"| `*` | user | send property performance updates to sellers (e.g. number of views, showings) | keep them informed and engaged |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"ylchin"},"content":"| `*` | user | track which clients were referre by past clients | send personalised appreciation messages and foster long-term relationships |","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"Solomon0519"},"content":"(For all use cases below, the **System** is `ABCLI` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"Solomon0519"},"content":"\u003cdetails\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"Solomon0519"},"content":" \u003csummary\u003e\u003cb\u003eUse Case 1: Adding a contact\u003c/b\u003e\u003c/summary\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"Solomon0519"},"content":"1. User requests to add a contact","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"Solomon0519"},"content":"2. ABCLI adds the contact","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"Solomon0519"},"content":"3. ABCLI shows a success message","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"Solomon0519"},"content":"4. ABCLI shows the updated list of contacts on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"Solomon0519"},"content":"- Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"Solomon0519"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"Solomon0519"},"content":"* 1a. The contact format is invalid","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"Solomon0519"},"content":" * 1a1. ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"Solomon0519"},"content":" * Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"Solomon0519"},"content":"\u003c/details\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"Solomon0519"},"content":"\u003cdetails\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"Solomon0519"},"content":" \u003csummary\u003e\u003cb\u003eUse Case 2: Deleting a contact\u003c/b\u003e\u003c/summary\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"Solomon0519"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"Solomon0519"},"content":"1. User requests to list contacts","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"Solomon0519"},"content":"2. ABCLI shows the list of contacts on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"Solomon0519"},"content":"3. User requests to delete a specific contact","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"Solomon0519"},"content":"4. ABCLI deletes the contact","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Solomon0519"},"content":"5. ABCLI shows a success message","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"Solomon0519"},"content":"6. ABCLI shows the updated list of contacts on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"Solomon0519"},"content":" ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"Solomon0519"},"content":"- Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"Solomon0519"},"content":"- 3a. The index for deletion is not a positive whole number","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Solomon0519"},"content":" - 3a1. ABCLI shows an error message","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Solomon0519"},"content":"- 3b. The index for deletion is out of range","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"Solomon0519"},"content":" - 3b1. ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"Solomon0519"},"content":"\u003c/details\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"Solomon0519"},"content":"\u003cdetails\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Solomon0519"},"content":" \u003csummary\u003e\u003cb\u003eUse Case 3: Adding a meetup\u003c/b\u003e\u003c/summary\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Solomon0519"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Solomon0519"},"content":"1. User requests to add a meetup","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Solomon0519"},"content":"2. ABCLI adds the meetup","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Solomon0519"},"content":"3. ABCLI shows a success message","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Solomon0519"},"content":"4. ABCLI shows the updated list of meetups on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Solomon0519"},"content":"- Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Solomon0519"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"Solomon0519"},"content":"- 1a. The command is missing a name","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"Solomon0519"},"content":" - 1a1. ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"Solomon0519"},"content":" ","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"Solomon0519"},"content":"- 1b. The command is missing a flag","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"Solomon0519"},"content":" - 1b1 ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"Solomon0519"},"content":"\u003c/details\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"Solomon0519"},"content":"\u003cdetails\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"Solomon0519"},"content":" \u003csummary\u003e\u003cb\u003eUse Case 4: Viewing contacts\u003c/b\u003e\u003c/summary\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"Solomon0519"},"content":"**MSS**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"Solomon0519"},"content":"1. User requests to view all contacts","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"Solomon0519"},"content":"2. ABCLI shows the list of contacts on its interface","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"Solomon0519"},"content":"- Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"Solomon0519"},"content":"**Extensions**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"Solomon0519"},"content":"- 1a. Viewing buyer and seller contacts","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"Solomon0519"},"content":" - 1a1. User requests to view buyer contacts","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"Solomon0519"},"content":" - 1a2. ABCLI shows the list of contacts of buyers on its interface","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"Solomon0519"},"content":" - 1a3. User requests to view seller contacts","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"Solomon0519"},"content":" - 1a4. ABCLI shows the list of contacts of sellers on its interface","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"Solomon0519"},"content":" ","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"Solomon0519"},"content":"- 1b. t/ flag has invalid contact type","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"Solomon0519"},"content":" - 1b1. ABCLI shows an error message","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"Solomon0519"},"content":" - Use case ends","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"Solomon0519"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"Solomon0519"},"content":"\u003c/details\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"CreditableX"},"content":"### Non-Functional Requirements","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should be a result of evolving/enhancing/morphing the given codebase.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should be targeting users who can type fast and prefer typing over other means of input.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should be for a single user.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"CreditableX"},"content":"1. ABCLI needs to be developed in a breadth-first incremental manner over the project duration.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"CreditableX"},"content":"1. ABCLI\u0027s data should be stored locally and should be in a human editable text file.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"CreditableX"},"content":"1. ABCLI cannot use a DBMS to store data.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should follow the Object-oriented paradigm primarily.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should work on the Windows, Linux, and OS-X platforms.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should work on a computer that has version 17 of Java.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should work without requiring an installer.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"CreditableX"},"content":"1. ABCLI should not depend on your own remote server.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"CreditableX"},"content":"1. The use of third-party frameworks/libraries/services is allowed but only if they are free, open-source, and have permissive license terms and do not require any installation by users and do not violate other constraints.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"CreditableX"},"content":"1. The GUI should work well for standard screen resolutions 1920x1080 and higher and for screen scales 100% and 125%. In addition, the GUI should be usable for resolutions 1280x720 and higher, and for screen scales 150%.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"CreditableX"},"content":"1. ABCLI has to be packaged into a single JAR file.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"CreditableX"},"content":"### Glossary","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"CreditableX"},"content":"1. **ABCLI** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"CreditableX"},"content":"Our product name.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"CreditableX"},"content":"1. **CLI** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"CreditableX"},"content":"The command line interface is a way to interact with a computer by typing text commands instead of using a mouse to click on icons.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"CreditableX"},"content":"1. **Command Line** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"CreditableX"},"content":"A text box where you enter commands.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"CreditableX"},"content":"1. **Flag** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"CreditableX"},"content":"In our context, a flag is something preceded by a /, but is not the initial command. e.g in `add n/NAME`, `n/` is a flag but `add` is not.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"CreditableX"},"content":"1. **GUI** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"CreditableX"},"content":"Graphical user interface. The screen you see when opening the application.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"CreditableX"},"content":"1. [**Java**](https://www.java.com/en/) ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"CreditableX"},"content":"A programming language.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"CreditableX"},"content":"1. **Parameter** ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"CreditableX"},"content":"A value that you need to provide for the command to work. e.g in `add n/NAME`, `NAME` is a parameter.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"CreditableX"},"content":"1. [**Windows**](https://en.wikipedia.org/wiki/Microsoft_Windows) ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"CreditableX"},"content":"An operating system.","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"Solomon0519":72,"CreditableX":53,"ylchin":42,"NgZiXin":1,"-":362}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"Address Book Command Line Interface (ABCLI) is a **desktop app made specially for Real Estate Agents to manage contacts and is optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you are a real estate agent and can type fast, ABCLI can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":"2. Download the latest `.jar` file from [here](https://github.com/AY2425S1-CS2103T-F13-2/tp/releases/).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your application.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"NgZiXin"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar abcli.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"NgZiXin"},"content":"5. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 u/buyer` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":"* Items in angle brackets represent input choices.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"NgZiXin"},"content":" e.g `t/\u003cbuyer,seller\u003e` can be used as `t/buyer` or as `t/seller` only.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"NgZiXin"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS u/\u003cbuyer,seller\u003e [t/TAG]…​`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"NgZiXin"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 u/buyer`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"NgZiXin"},"content":"* `add n/Betsy Crowe t/friend u/seller e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"NgZiXin"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e:hourglass_flowing_sand: **Expected change in release v1.2**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"NgZiXin"},"content":"You will be able to view all people or filter by your contact type in the address book.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"NgZiXin"},"content":"Format: `view [t/\u003cbuyer,seller\u003e]`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"NgZiXin"},"content":"Examples:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"NgZiXin"},"content":"* `view t/buyer`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"NgZiXin"},"content":"* `view`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"NgZiXin"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"NgZiXin"},"content":"### Meet up `[coming in v1.2]`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"NgZiXin"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e:hourglass_flowing_sand: **Expected feature in release v1.2**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"NgZiXin"},"content":"You will be able to schedule a meet-up event with your contacts.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"NgZiXin"},"content":"Format: `meetup n/NAME i/INFO`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"NgZiXin"},"content":"Examples:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"NgZiXin"},"content":"* `meetup n/kennylewi i/Property viewing on saturday`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"NgZiXin"},"content":"\u003c/div\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"NgZiXin"},"content":"\u003cbr\u003e_More features coming soon ..._","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"NgZiXin":34,"-":187}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"NgZiXin"},"content":"title: \"ABCLI\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":"repository: \"AY2425S1-CS2103T-F13-2/tp\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"NgZiXin":2,"-":13}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"NgZiXin"},"content":" content: \"ABCLI\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12","isFullCredit":false}],"authorContributionMap":{"NgZiXin":1,"-":294}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"title: ABCLI","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":"**ABCLI is a desktop application specially made for Real Estate Agents for managing their clients\u0027 contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":"* If you are interested in using ABCLI, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"* If you are interested about developing ABCLI, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"NgZiXin":6,"-":14}},{"path":"docs/team/Eswen.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Solomon0519"},"content":"Hello World","lastModifiedDate":"2024-09-25","isFullCredit":false}],"authorContributionMap":{"Solomon0519":1}},{"path":"docs/team/creditablex.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"CreditableX"},"content":"### hello ###","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"CreditableX"},"content":"good morning!!!!","lastModifiedDate":"2024-09-25","isFullCredit":false}],"authorContributionMap":{"CreditableX":3}},{"path":"docs/team/kennylewi.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"KennyLewi"},"content":"---","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"KennyLewi"},"content":"layout: page","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"KennyLewi"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"KennyLewi"},"content":"---","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"KennyLewi"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"KennyLewi"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"KennyLewi"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"KennyLewi"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"KennyLewi"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"KennyLewi"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"KennyLewi"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"KennyLewi"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"KennyLewi"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"KennyLewi"},"content":"* **Project management**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"KennyLewi"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"KennyLewi"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"KennyLewi"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"KennyLewi"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"KennyLewi"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"KennyLewi"},"content":" * User Guide:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"KennyLewi"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"KennyLewi"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"KennyLewi"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"KennyLewi"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"KennyLewi"},"content":"* **Community**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"KennyLewi"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"KennyLewi"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"KennyLewi"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"KennyLewi"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"KennyLewi"},"content":"* **Tools**:","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"KennyLewi"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"KennyLewi"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"KennyLewi"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-25","isFullCredit":false}],"authorContributionMap":{"KennyLewi":46}},{"path":"docs/team/ngzixin.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"title: Ng Zi Xin\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"NgZiXin":1,"-":3}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"KennyLewi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"KennyLewi"},"content":" * Formats the {@code meetup} for display to the user.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"KennyLewi"},"content":" public static String format(MeetUp meetup) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"KennyLewi"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"KennyLewi"},"content":" builder.append(meetup.getName())","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"KennyLewi"},"content":" .append(\"; Info: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"KennyLewi"},"content":" .append(meetup.getInfo())","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"KennyLewi"},"content":" .append(\"; From: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"KennyLewi"},"content":" .append(meetup.getFrom())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"KennyLewi"},"content":" .append(\"; To: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"KennyLewi"},"content":" .append(meetup.getTo());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"KennyLewi"},"content":" return builder.toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"KennyLewi":15,"-":51}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":" + PREFIX_PERSON_TYPE + \"buyer \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"NgZiXin":2,"-":84}},{"path":"src/main/java/seedu/address/logic/commands/AddMeetUpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KennyLewi"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"KennyLewi"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INFO;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"KennyLewi"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"KennyLewi"},"content":" * Adds a meetup to the address book.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"KennyLewi"},"content":"public class AddMeetUpCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"KennyLewi"},"content":" public static final String COMMAND_WORD \u003d \"addm\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"KennyLewi"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a meetup to the address book. \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"KennyLewi"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_INFO + \"MEETUP INFO \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_FROM + \"YYYY-MM-DD HH:mm \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_TO + \"YYYY-MM-DD HH:mm \\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"KennyLewi"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_NAME + \"Discuss work plans \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_INFO + \"Meet with Eswen to discuss the March Project \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_FROM + \"2024-02-03 14:00 \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"KennyLewi"},"content":" + PREFIX_TO + \"2024-02-03 15:30 \";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"KennyLewi"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New Meetup added: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"KennyLewi"},"content":" private final MeetUp toAdd;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"KennyLewi"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"KennyLewi"},"content":" * Creates an AddMeetUpCommand to add the specified {@code MeetUp}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"KennyLewi"},"content":" public AddMeetUpCommand(MeetUp meetup) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"KennyLewi"},"content":" requireNonNull(meetup);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"KennyLewi"},"content":" toAdd \u003d meetup;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"KennyLewi"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"KennyLewi"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"KennyLewi"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"KennyLewi"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"KennyLewi"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"KennyLewi"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"KennyLewi"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"KennyLewi"},"content":" return true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"KennyLewi"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"KennyLewi"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"KennyLewi"},"content":" return false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"KennyLewi"},"content":" AddMeetUpCommand otherAddMeetupCommand \u003d (AddMeetUpCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"KennyLewi"},"content":" return toAdd.equals(otherAddMeetupCommand.toAdd);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"KennyLewi"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"KennyLewi"},"content":" public String toString() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"KennyLewi"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"KennyLewi"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"KennyLewi"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"KennyLewi"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"KennyLewi":73}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"NgZiXin"},"content":" PersonType updatedPersonType \u003d personToEdit.getPersonType(); // edit command does not allow editing personType","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"NgZiXin"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedPersonType, updatedTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"NgZiXin":3,"-":241}},{"path":"src/main/java/seedu/address/logic/commands/FilterMeetUpCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CreditableX"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"CreditableX"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"CreditableX"},"content":"import seedu.address.model.meetup.MeetUpContainsDate;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"CreditableX"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"CreditableX"},"content":" * Finds and lists all meetings in address book whose date is the same as the given date.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"CreditableX"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"CreditableX"},"content":"public class FilterMeetUpCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"CreditableX"},"content":" public static final String COMMAND_WORD \u003d \"filterMeetup\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"CreditableX"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all meetings whose date matches \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"CreditableX"},"content":" + \" the given date and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"CreditableX"},"content":" + \"Parameters: KEYWORD yyyy-mm-dd\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"CreditableX"},"content":" + \"Example: \" + COMMAND_WORD + \"2022-12-12\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"CreditableX"},"content":" private final MeetUpContainsDate predicate;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"CreditableX"},"content":" public FilterMeetUpCommand(MeetUpContainsDate predicate) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"CreditableX"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"CreditableX"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"CreditableX"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"CreditableX"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"CreditableX"},"content":" // TODO","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"CreditableX"},"content":" return null;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"CreditableX"},"content":" // requireNonNull(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"CreditableX"},"content":" // model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"CreditableX"},"content":" // return new CommandResult(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"CreditableX"},"content":" // String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"CreditableX"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"CreditableX"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"CreditableX":34}},{"path":"src/main/java/seedu/address/logic/commands/ViewCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ylchin"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ylchin"},"content":"import seedu.address.model.person.PersonFulfilsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ylchin"},"content":"public class ViewCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ylchin"},"content":" public static final String COMMAND_WORD \u003d \"view\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ylchin"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Viewing all persons satisfying client type\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ylchin"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose person types match the keyword\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ylchin"},"content":" + \"(buyer/seller) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ylchin"},"content":" + \"If there are no keywords specified, all persons are listed.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ylchin"},"content":" + \"Parameters: [buyer/seller](optional)\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ylchin"},"content":" + \"Example: \" + COMMAND_WORD + \" buyer\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ylchin"},"content":" private final PersonFulfilsPredicate predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ylchin"},"content":" public ViewCommand(PersonFulfilsPredicate predicate) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ylchin"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ylchin"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ylchin"},"content":" return new CommandResult(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ylchin"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size())","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ylchin"},"content":" );","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"ylchin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"ylchin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"ylchin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"ylchin"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ylchin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ylchin"},"content":" if (!(other instanceof ViewCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"ylchin"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ylchin"},"content":" ViewCommand e \u003d (ViewCommand) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ylchin"},"content":" return predicate.equals(e.predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ylchin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ylchin"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ylchin"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ylchin"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ylchin"},"content":" .toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"ylchin":43,"-":18}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" PREFIX_PERSON_TYPE, PREFIX_TAG);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"NgZiXin"},"content":" PREFIX_PERSON_TYPE)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" PREFIX_PERSON_TYPE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"NgZiXin"},"content":" PersonType personType \u003d ParserUtil.parsePersonType(argMultimap.getValue(PREFIX_PERSON_TYPE).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" Person person \u003d new Person(name, phone, email, address, personType, tagList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"NgZiXin":10,"-":57}},{"path":"src/main/java/seedu/address/logic/parser/AddMeetUpCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"KennyLewi"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FROM;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_INFO;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"KennyLewi"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TO;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"KennyLewi"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"KennyLewi"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"KennyLewi"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.commands.AddMeetUpCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"KennyLewi"},"content":" * Parses input arguments and creates a new AddMeetUpCommand object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"KennyLewi"},"content":"public class AddMeetUpCommandParser implements Parser\u003cAddMeetUpCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"KennyLewi"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"KennyLewi"},"content":" * Parses the given {@code String} of arguments in the context of the AddMeetUpCommand","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"KennyLewi"},"content":" * and returns an AddMeetUpCommand object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"KennyLewi"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"KennyLewi"},"content":" public AddMeetUpCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"KennyLewi"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"KennyLewi"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_INFO, PREFIX_FROM, PREFIX_TO);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"KennyLewi"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_INFO, PREFIX_FROM, PREFIX_TO)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"KennyLewi"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"KennyLewi"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMeetUpCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"KennyLewi"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_INFO, PREFIX_FROM, PREFIX_TO);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"KennyLewi"},"content":" String name \u003d argMultimap.getValue(PREFIX_NAME).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"KennyLewi"},"content":" String info \u003d argMultimap.getValue(PREFIX_INFO).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"KennyLewi"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"KennyLewi"},"content":" LocalDateTime from \u003d LocalDateTime.parse(argMultimap.getValue(PREFIX_FROM).get(), formatter);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"KennyLewi"},"content":" LocalDateTime to \u003d LocalDateTime.parse(argMultimap.getValue(PREFIX_TO).get(), formatter);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"KennyLewi"},"content":" MeetUp meetUp \u003d new MeetUp(name, info, from, to);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"KennyLewi"},"content":" return new AddMeetUpCommand(meetUp);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"KennyLewi"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"KennyLewi"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"KennyLewi"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"KennyLewi"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"KennyLewi"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"KennyLewi"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"KennyLewi"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"KennyLewi":56}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.logic.commands.AddMeetUpCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ylchin"},"content":" case ViewCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ylchin"},"content":" return new ViewCommandParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"KennyLewi"},"content":" case AddMeetUpCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"KennyLewi"},"content":" return new AddMeetUpCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"KennyLewi":4,"ylchin":3,"-":83}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":" public static final Prefix PREFIX_PERSON_TYPE \u003d new Prefix(\"u/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"KennyLewi"},"content":" public static final Prefix PREFIX_INFO \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"KennyLewi"},"content":" public static final Prefix PREFIX_FROM \u003d new Prefix(\"from/\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":" public static final Prefix PREFIX_TO \u003d new Prefix(\"to/\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"KennyLewi":3,"NgZiXin":1,"-":15}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"NgZiXin"},"content":" * Parses a {@code String personType} into an {@code PersonType}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"NgZiXin"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"NgZiXin"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"NgZiXin"},"content":" * @throws ParseException if the given {@code personType} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"NgZiXin"},"content":" public static PersonType parsePersonType(String personType) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"NgZiXin"},"content":" requireNonNull(personType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"NgZiXin"},"content":" String trimmedPersonType \u003d personType.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"NgZiXin"},"content":" if (!PersonType.isValidType(trimmedPersonType)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"NgZiXin"},"content":" throw new ParseException(PersonType.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"NgZiXin"},"content":" return new PersonType(trimmedPersonType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"NgZiXin":16,"-":124}},{"path":"src/main/java/seedu/address/logic/parser/ViewCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ylchin"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ylchin"},"content":"import seedu.address.model.person.PersonFulfilsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ylchin"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ylchin"},"content":" * Parses input arguments and creates a new ViewCommand object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ylchin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ylchin"},"content":"public class ViewCommandParser implements Parser\u003cViewCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ylchin"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ylchin"},"content":" * Parses the given {@code String} of arguments in the context of the ViewCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ylchin"},"content":" * and returns an ViewCommand object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ylchin"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ylchin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ylchin"},"content":" public ViewCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ylchin"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ylchin"},"content":" String keyword;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ylchin"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ylchin"},"content":" keyword \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ylchin"},"content":" } else {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ylchin"},"content":" keyword \u003d trimmedArgs.split(\"\\\\s+\")[0];","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ylchin"},"content":" if (!keyword.equals(\"buyer\") \u0026\u0026 !keyword.equals(\"seller\")) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ylchin"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ylchin"},"content":" String.format(Messages.MESSAGE_INVALID_COMMAND_FORMAT, ViewCommand.MESSAGE_USAGE)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ylchin"},"content":" );","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ylchin"},"content":" return new ViewCommand(new PersonFulfilsPredicate(keyword));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ylchin"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"ylchin":34}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"CreditableX"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"CreditableX"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"CreditableX"},"content":" * Updates the filter of the meetup list to filter by the given {@code predicate}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"CreditableX"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"CreditableX"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"CreditableX"},"content":" void updateFilteredMeetUpList(Predicate\u003cMeetUp\u003e predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"CreditableX":7,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"CreditableX"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.schedule.Schedule;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"CreditableX"},"content":" private final FilteredList\u003cMeetUp\u003e filteredMeetUps \u003d null; // TODO","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"NgZiXin"},"content":" private final FilteredList\u003cSchedule\u003e filteredSchedules \u003d null; //TODO","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"CreditableX"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered MeetUp List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"CreditableX"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"CreditableX"},"content":" public void updateFilteredMeetUpList(Predicate\u003cMeetUp\u003e predicate) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"CreditableX"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"CreditableX"},"content":" filteredMeetUps.setPredicate(predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"CreditableX"},"content":" // TODO","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"CreditableX"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"CreditableX":9,"NgZiXin":2,"-":148}},{"path":"src/main/java/seedu/address/model/meetup/MeetUp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgZiXin"},"content":"package seedu.address.model.meetup;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"KennyLewi"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"KennyLewi"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":" * Represents a Meetup in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"public class MeetUp { //TODO","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":" // Identity fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"KennyLewi"},"content":" private final String name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"KennyLewi"},"content":" private final String info;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"KennyLewi"},"content":" private final LocalDateTime from;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"KennyLewi"},"content":" private final LocalDateTime to;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"NgZiXin"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"KennyLewi"},"content":" public MeetUp(String name, String info, LocalDateTime from, LocalDateTime to) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"KennyLewi"},"content":" requireAllNonNull(name, info, from, to);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"KennyLewi"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"KennyLewi"},"content":" this.info \u003d info;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":" this.from \u003d from;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" this.to \u003d to;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"KennyLewi"},"content":" * Returns true if both meetups have the same identity and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":" * This defines a stronger notion of equality between two meetUps.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"NgZiXin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"NgZiXin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" if (!(other instanceof MeetUp)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"NgZiXin"},"content":" MeetUp otherMeetUp \u003d (MeetUp) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"KennyLewi"},"content":" return name.equals(otherMeetUp.name)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"KennyLewi"},"content":" \u0026\u0026 info.equals(otherMeetUp.info)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"NgZiXin"},"content":" \u0026\u0026 from.equals(otherMeetUp.from)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" \u0026\u0026 to.equals(otherMeetUp.to);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"NgZiXin"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"NgZiXin"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"KennyLewi"},"content":" return Objects.hash(name, info, from, to);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"NgZiXin"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"NgZiXin"},"content":" //TODO","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"KennyLewi"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"KennyLewi"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"KennyLewi"},"content":" .add(\"info\", info)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"KennyLewi"},"content":" .add(\"from\", from)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"KennyLewi"},"content":" .add(\"to\", to)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"KennyLewi"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"KennyLewi"},"content":" public String getName() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"KennyLewi"},"content":" return this.name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"KennyLewi"},"content":" public String getInfo() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"KennyLewi"},"content":" return this.info;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"KennyLewi"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"KennyLewi"},"content":" public LocalDateTime getFrom() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"KennyLewi"},"content":" return this.from;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"KennyLewi"},"content":" public LocalDateTime getTo() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"KennyLewi"},"content":" return this.to;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"KennyLewi"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"NgZiXin"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"KennyLewi":36,"NgZiXin":52}},{"path":"src/main/java/seedu/address/model/meetup/MeetUpContainsDate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"CreditableX"},"content":"package seedu.address.model.meetup;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"CreditableX"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"CreditableX"},"content":"import java.util.Date;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"CreditableX"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"CreditableX"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"CreditableX"},"content":" * Tests that a {@code Meetup}\u0027s {@code Date} range contains the given date.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"CreditableX"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"CreditableX"},"content":"public class MeetUpContainsDate implements Predicate\u003cMeetUp\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"CreditableX"},"content":" private final Date date;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"CreditableX"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"CreditableX"},"content":" * Date must be present and not null.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"CreditableX"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"CreditableX"},"content":" public MeetUpContainsDate(Date date) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"CreditableX"},"content":" requireNonNull(date);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"CreditableX"},"content":" this.date \u003d date;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"CreditableX"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"CreditableX"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"CreditableX"},"content":" public boolean test(MeetUp meetUp) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"CreditableX"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"CreditableX"},"content":" // TODO","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"CreditableX"},"content":" //return !meetUp.getFrom().before(this.date) \u0026\u0026 !meetUp.getTo().after(this.date);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"CreditableX"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"CreditableX"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"CreditableX":28}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"NgZiXin"},"content":" private final PersonType personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":" public Person(Name name, Phone phone, Email email, Address address, PersonType personType, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" requireAllNonNull(name, phone, email, address, tags, personType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" this.personType \u003d personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"NgZiXin"},"content":" public PersonType getPersonType() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"NgZiXin"},"content":" return personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"NgZiXin"},"content":" .add(\"type\", personType)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"NgZiXin":9,"-":115}},{"path":"src/main/java/seedu/address/model/person/PersonFulfilsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"ylchin"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"ylchin"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ylchin"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ylchin"},"content":" * Tests that a {@code Person}\u0027s {@code PersonType} matches the given keyword.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"ylchin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"ylchin"},"content":"public class PersonFulfilsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"ylchin"},"content":" private final String keyword;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ylchin"},"content":" public PersonFulfilsPredicate(String keyword) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"ylchin"},"content":" this.keyword \u003d keyword;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"ylchin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"ylchin"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"ylchin"},"content":" if (keyword.isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ylchin"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"ylchin"},"content":" return person.getPersonType().value.toString().equals(keyword);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ylchin"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ylchin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ylchin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"ylchin"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"ylchin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"ylchin"},"content":" if (!(other instanceof PersonFulfilsPredicate)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"ylchin"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"ylchin"},"content":" PersonFulfilsPredicate otherPredicate \u003d (PersonFulfilsPredicate) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ylchin"},"content":" return keyword.equals(otherPredicate.keyword);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ylchin"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"ylchin":38}},{"path":"src/main/java/seedu/address/model/person/PersonType.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgZiXin"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":" * Represents a Person\u0027s type in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"NgZiXin"},"content":"public class PersonType {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":" * Only types allowed","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":" public enum Type {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":" BUYER,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":" SELLER;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"NgZiXin"},"content":" return this.name().toLowerCase();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"NgZiXin"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"User type must be specified as only \\\"buyer\\\" or \\\"seller\\\".\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"NgZiXin"},"content":" public static final String VALIDATION_REGEX \u003d \"[a-z]+\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"NgZiXin"},"content":" public final Type value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" * Constructs a {@code PersonType}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" * @param str A valid string that can transformed to a type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"NgZiXin"},"content":" public PersonType(String str) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":" requireNonNull(str);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" checkArgument(isValidType(str), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" this.value \u003d Type.valueOf(str.toUpperCase());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"NgZiXin"},"content":" * Constructs a {@code PersonType}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"NgZiXin"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"NgZiXin"},"content":" * @param type A valid type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" public PersonType(Type type) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"NgZiXin"},"content":" requireNonNull(type);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"NgZiXin"},"content":" this.value \u003d type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"NgZiXin"},"content":" * Returns true if a given string is a valid type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" public static boolean isValidType(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"NgZiXin"},"content":" if (!test.matches(VALIDATION_REGEX)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"NgZiXin"},"content":" for (Type aType : Type.values()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":" if (aType.toString().equals(test)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"NgZiXin"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"NgZiXin"},"content":" return value.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"NgZiXin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"NgZiXin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"NgZiXin"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"NgZiXin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"NgZiXin"},"content":" if (!(other instanceof PersonType)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"NgZiXin"},"content":" PersonType otherPersonType \u003d (PersonType) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"NgZiXin"},"content":" return value.equals(otherPersonType.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"NgZiXin"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"NgZiXin"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"NgZiXin"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"NgZiXin":91}},{"path":"src/main/java/seedu/address/model/schedule/Schedule.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"NgZiXin"},"content":"package seedu.address.model.schedule;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"NgZiXin"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"NgZiXin"},"content":" * Represents a Schedule in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"NgZiXin"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"NgZiXin"},"content":"public class Schedule {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":" // Identity fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":" private final Person person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"NgZiXin"},"content":" private final MeetUp meetUp;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"NgZiXin"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"NgZiXin"},"content":" public Schedule(Person person, MeetUp meetUp) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"NgZiXin"},"content":" requireAllNonNull(person, meetUp);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"NgZiXin"},"content":" this.person \u003d person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"NgZiXin"},"content":" this.meetUp \u003d meetUp;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":" public Person getPerson() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" return person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" public MeetUp getMeetUp() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"NgZiXin"},"content":" return meetUp;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" * Returns true if Person is involved in this schedule.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"NgZiXin"},"content":" public boolean isPersonInvolved(Person person) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" return this.person.equals(person);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" * Returns true if MeetUp is involved in this schedule","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"NgZiXin"},"content":" public boolean isMeetupInvolved(MeetUp meetup) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"NgZiXin"},"content":" return this.meetUp.equals(meetup);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"NgZiXin"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" * This defines a stronger notion of equality between two schedule.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"NgZiXin"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"NgZiXin"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"NgZiXin"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"NgZiXin"},"content":" if (!(other instanceof Schedule)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"NgZiXin"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"NgZiXin"},"content":" Schedule otherSchedule \u003d (Schedule) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"NgZiXin"},"content":" return person.equals(otherSchedule.person)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"NgZiXin"},"content":" \u0026\u0026 meetUp.equals(otherSchedule.meetUp);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"NgZiXin"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"NgZiXin"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"NgZiXin"},"content":" return Objects.hash(person, meetUp);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"NgZiXin"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"NgZiXin"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"NgZiXin"},"content":" return String.format(\"%s is scheduled for %s\", person.toString(), meetUp.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"NgZiXin"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"NgZiXin":82}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"seller\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"seller\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" new PersonType(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"NgZiXin":7,"-":60}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":" private final String personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" @JsonProperty(\"personType\") String personType,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"NgZiXin"},"content":" this.personType \u003d personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"NgZiXin"},"content":" personType \u003d source.getPersonType().value.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"NgZiXin"},"content":" final PersonType modelPersonType \u003d new PersonType(personType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"NgZiXin"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelPersonType, modelTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"NgZiXin":7,"-":108}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"NgZiXin"},"content":" private Label personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"NgZiXin"},"content":" @FXML","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"NgZiXin"},"content":" personType.setText(person.getPersonType().value.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"NgZiXin":3,"-":59}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"NgZiXin"},"content":"#personType {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"NgZiXin"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"NgZiXin"},"content":" -fx-background-color: #f5182f;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"NgZiXin"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"NgZiXin"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"NgZiXin"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"NgZiXin"},"content":" -fx-font-size: 11;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"NgZiXin"},"content":" -fx-vgap: 3;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"NgZiXin"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"NgZiXin":11,"-":352}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" \u003cGridPane hgap\u003d\"7\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" \u003cLabel fx:id\u003d\"personType\" text\u003d\"$personType\" GridPane.columnIndex\u003d\"0\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":" \u003cFlowPane fx:id\u003d\"tags\" alignment\u003d\"CENTER_LEFT\" GridPane.columnIndex\u003d\"1\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"NgZiXin":4,"-":35}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ylchin"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_TYPE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ylchin"},"content":" String viewCommand \u003d ViewCommand.COMMAND_WORD;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ylchin"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ylchin"},"content":" assertCommandSuccess(viewCommand, expectedMessage, model);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"NgZiXin"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + PERSON_TYPE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"ylchin":5,"NgZiXin":2,"-":171}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"CreditableX"},"content":"import seedu.address.model.meetup.MeetUp;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"CreditableX"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"CreditableX"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"CreditableX"},"content":" public void updateFilteredMeetUpList(Predicate\u003cMeetUp\u003e meetUp) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"CreditableX"},"content":" // TODO","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"CreditableX"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"CreditableX":6,"-":204}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" public static final String VALID_PERSON_TYPE_AMY \u003d \"seller\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"NgZiXin"},"content":" public static final String VALID_PERSON_TYPE_BOB \u003d \"buyer\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"NgZiXin"},"content":" public static final String PERSON_TYPE_DESC_BOB \u003d \" \" + PREFIX_PERSON_TYPE + VALID_PERSON_TYPE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"NgZiXin"},"content":" public static final String PERSON_TYPE_DESC_AMY \u003d \" \" + PREFIX_PERSON_TYPE + VALID_PERSON_TYPE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"NgZiXin":5,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/FilterMeetUpCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"CreditableX"},"content":"// TODO","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"CreditableX":1}},{"path":"src/test/java/seedu/address/logic/commands/ViewCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"ylchin"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"ylchin"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"ylchin"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"ylchin"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"ylchin"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"ylchin"},"content":"import seedu.address.model.person.PersonFulfilsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"ylchin"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ViewCommand.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"ylchin"},"content":"public class ViewCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"ylchin"},"content":" public void execute_zeroKeywords_showsEverything() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"ylchin"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 7);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"ylchin"},"content":" PersonFulfilsPredicate predicate \u003d preparePredicate(\"\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"ylchin"},"content":" ViewCommand command \u003d new ViewCommand(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"ylchin"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"ylchin"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"ylchin"},"content":" public void execute_invalidKeyword_noPersonsFound() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"ylchin"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"ylchin"},"content":" PersonFulfilsPredicate predicate \u003d preparePredicate(\"hello\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"ylchin"},"content":" ViewCommand command \u003d new ViewCommand(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"ylchin"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"ylchin"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"ylchin"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"ylchin"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"ylchin"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"ylchin"},"content":" PersonFulfilsPredicate firstPredicate \u003d new PersonFulfilsPredicate(\"\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"ylchin"},"content":" PersonFulfilsPredicate secondPredicate \u003d new PersonFulfilsPredicate(\"buyer\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"ylchin"},"content":" ViewCommand viewFirstCommand \u003d new ViewCommand(firstPredicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"ylchin"},"content":" ViewCommand viewSecondCommand \u003d new ViewCommand(secondPredicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"ylchin"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"ylchin"},"content":" assertTrue(viewFirstCommand.equals(viewFirstCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"ylchin"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"ylchin"},"content":" ViewCommand viewFirstCommandCopy \u003d new ViewCommand(firstPredicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"ylchin"},"content":" assertTrue(viewFirstCommand.equals(viewFirstCommandCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"ylchin"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"ylchin"},"content":" assertFalse(viewFirstCommand.equals(1));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"ylchin"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"ylchin"},"content":" assertFalse(viewFirstCommand.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"ylchin"},"content":" // different keyword -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"ylchin"},"content":" assertFalse(viewFirstCommand.equals(viewSecondCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"ylchin"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"ylchin"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"ylchin"},"content":" PersonFulfilsPredicate predicate \u003d new PersonFulfilsPredicate(\"buyer\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"ylchin"},"content":" ViewCommand viewCommand \u003d new ViewCommand(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"ylchin"},"content":" String expected \u003d ViewCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"ylchin"},"content":" assertEquals(expected, viewCommand.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"ylchin"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"ylchin"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"ylchin"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ylchin"},"content":" * Parses {@code userInput} into a {@code PersonFulfilsPredicate}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"ylchin"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"ylchin"},"content":" private PersonFulfilsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"ylchin"},"content":" String trimmedArgs \u003d userInput.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"ylchin"},"content":" String keyword \u003d trimmedArgs.isEmpty() ? \"\" : trimmedArgs.split(\"\\\\s+\")[0];","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"ylchin"},"content":" return new PersonFulfilsPredicate(keyword);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"ylchin":64,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_TYPE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_TYPE_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"NgZiXin"},"content":" + ADDRESS_DESC_BOB + PERSON_TYPE_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"NgZiXin"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"NgZiXin"},"content":" + ADDRESS_DESC_BOB + PERSON_TYPE_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"NgZiXin"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"NgZiXin"},"content":" PREFIX_PERSON_TYPE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"NgZiXin"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"NgZiXin"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"NgZiXin"},"content":" + PERSON_TYPE_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"NgZiXin"},"content":" + ADDRESS_DESC_BOB + PERSON_TYPE_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"NgZiXin":30,"-":172}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"ylchin"},"content":"import seedu.address.logic.commands.ViewCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"ylchin"},"content":" assertTrue(parser.parseCommand(ViewCommand.COMMAND_WORD) instanceof ViewCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"ylchin"},"content":" assertTrue(parser.parseCommand(ViewCommand.COMMAND_WORD + \" buyer\") instanceof ViewCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"ylchin":3,"-":98}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"NgZiXin"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress() + \", type\u003d\" + ALICE.getPersonType()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"NgZiXin"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"NgZiXin":2,"-":98}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"NgZiXin"},"content":" private static final String VALID_PERSON_TYPE \u003d BENSON.getPersonType().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_PERSON_TYPE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"NgZiXin"},"content":" VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_PERSON_TYPE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"NgZiXin"},"content":" VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"NgZiXin"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_PERSON_TYPE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"NgZiXin"},"content":" VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"NgZiXin"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_PERSON_TYPE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"NgZiXin"},"content":" VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"NgZiXin"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"NgZiXin"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"NgZiXin"},"content":" VALID_PERSON_TYPE, invalidTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"NgZiXin":19,"-":101}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"NgZiXin"},"content":"import seedu.address.model.person.PersonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"NgZiXin"},"content":" public static final String DEFAULT_PERSON_TYPE \u003d \"buyer\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"NgZiXin"},"content":" private PersonType personType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"NgZiXin"},"content":" personType \u003d new PersonType(DEFAULT_PERSON_TYPE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"NgZiXin"},"content":" personType \u003d personToCopy.getPersonType();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"NgZiXin"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"NgZiXin"},"content":" * Sets the {@code PersonType} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"NgZiXin"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"NgZiXin"},"content":" public PersonBuilder withPersonType(String personType) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"NgZiXin"},"content":" this.personType \u003d new PersonType(personType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"NgZiXin"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"NgZiXin"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"NgZiXin"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"NgZiXin"},"content":" return new Person(name, phone, email, address, personType, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"NgZiXin":14,"-":95}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"NgZiXin"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PERSON_TYPE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"NgZiXin"},"content":" sb.append(PREFIX_PERSON_TYPE + person.getPersonType().value.toString() + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"NgZiXin":2,"-":62}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"NgZiXin"},"content":" .withPersonType(\"seller\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"NgZiXin"},"content":" .withEmail(\"johnd@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"NgZiXin"},"content":" .withPhone(\"98765432\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"NgZiXin"},"content":" .withPersonType(\"buyer\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"NgZiXin":4,"-":75}}] diff --git a/AY2425S1-CS2103T-F13-2_tp_master/commits.json b/AY2425S1-CS2103T-F13-2_tp_master/commits.json index 7a7c3b75..9fb663e2 100644 --- a/AY2425S1-CS2103T-F13-2_tp_master/commits.json +++ b/AY2425S1-CS2103T-F13-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Solomon0519":[{"date":"2024-09-25","commitResults":[{"hash":"019bb6c81f590ce5959ef99d94ece258f0c2c706","isMergeCommit":false,"messageTitle":"Edit AboutUs for team roles and reponsibility","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":42}}},{"hash":"ff2af10aa0618b2d935d5f06abfd4c43646be589","isMergeCommit":false,"messageTitle":"Edit AboutUs for team roles and reponsibility","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"ed5e494404d25626cff1564ac308409b4025bcd9","isMergeCommit":false,"messageTitle":"Edit AboutUs for team roles and reponsibility","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-02","commitResults":[{"hash":"782cf42496199b83682e72abc1953bc77887f887","isMergeCommit":false,"messageTitle":"Edit use cases for Develop","messageBody":"Added 3 use cases, namely for adding a contact, deleting a contact and adding a meetup.\n","fileTypesAndContributionMap":{"docs":{"insertions":116,"deletions":13}}},{"hash":"412951930ecea54d2a31df7764c7d6bb5affd725","isMergeCommit":true,"messageTitle":"Merge pull request #39 from NgZiXin/update-readme","messageBody":"Update README","fileTypesAndContributionMap":{}},{"hash":"0a736acabbbf083fe5540191d801ab8979a3884f","isMergeCommit":true,"messageTitle":"Merge pull request #42 from NgZiXin/add-expected-updates-userguide","messageBody":"Add expected updates userguide","fileTypesAndContributionMap":{}},{"hash":"6c906adf7d0ab83f4120d142b51868cf83aa8ca2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-userguide-context","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8f6a28f8b408176b467ce9fd5365f0b0df83343b","isMergeCommit":true,"messageTitle":"Merge pull request #43 from NgZiXin/update-userguide-context","messageBody":"Update user guide context to match ABCLI","fileTypesAndContributionMap":{}},{"hash":"c56df3f9ec802cd7b397f6980d680199f551e8d4","isMergeCommit":false,"messageTitle":"Edit use cases for Develop","messageBody":"Added 3 use cases, namely for adding a contact, deleting a contact and adding a meetup.\n","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":6}}}]},{"date":"2024-10-09","commitResults":[{"hash":"6d81889dbf198632da2adfef71c2eb77378a645b","isMergeCommit":false,"messageTitle":"Touch up use cases for Develop","messageBody":"Reformat the use cases according to guidelines.\n","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":106}}}]},{"date":"2024-10-10","commitResults":[{"hash":"7bdc60a3a53edf84e10b5802d820955cc1db1b1f","isMergeCommit":true,"messageTitle":"Merge pull request #57 from NgZiXin/add-client-type","messageBody":"Add client type","fileTypesAndContributionMap":{}},{"hash":"0c81376ba6ddeed1472a9ab4bb92bfbf45900448","isMergeCommit":true,"messageTitle":"Merge pull request #59 from NgZiXin/add-schedule","messageBody":"Add Schedule and MeetUp class skeleton","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"bc1e09e3f9eb337eab378102eb789e2afe2e8d26","isMergeCommit":true,"messageTitle":"Merge pull request #72 from KennyLewi/add-meetup-class","messageBody":"Add meetup class","fileTypesAndContributionMap":{}}]}],"CreditableX":[{"date":"2024-09-25","commitResults":[{"hash":"98bdf4ed0c782b63ff6fbe72ea7660defb3cba07","isMergeCommit":false,"messageTitle":"Add AboutUs for Meng","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":90}}},{"hash":"bba13d195aed4f5ec3b46be4ff287b605613a51a","isMergeCommit":false,"messageTitle":"Add AboutUs for Meng","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"55717d78f10b387a90c85c97d5b62743470125ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into A-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"807c3c262548445056defdf8078bd8f55d049a0b","isMergeCommit":true,"messageTitle":"Merge pull request #27 from Solomon0519/A-AboutUs","messageBody":"Edit team roles and responsibility","fileTypesAndContributionMap":{}},{"hash":"7c9649ebf82e83ea10041f9587b41fcef20f0f68","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"64eed5951255091b817fb2b7c8face68fb2f8f39","isMergeCommit":true,"messageTitle":"Merge pull request #22 from KennyLewi/update-aboutus","messageBody":"Update AboutUs.md for kenny","fileTypesAndContributionMap":{}},{"hash":"2c72009ca91bc8e58eec16cf28340c1fa59d8e4c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-yiLing-info","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"51e07a737d2598d1a3e656f10214a942cb7ad9f3","isMergeCommit":true,"messageTitle":"Merge pull request #26 from ylchin/add-yiLing-info","messageBody":"Add Yi Ling\u0027s information in AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"343f45084a33fec3a38d4c45641b4ae3281eafba","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into A-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2245f1faae6dbe9e75512b7b89be1d032a76e2db","isMergeCommit":true,"messageTitle":"Merge pull request #24 from NgZiXin/A-AboutUs","messageBody":"Update AboutUs page","tags":["v1.0"],"fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"5f7bf577acf59dc4da16a965ca7e32ea03d1858b","isMergeCommit":false,"messageTitle":"Add Non-Functional Requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":0}}},{"hash":"7f4da25ff459b66c05d953a9195999d4a305705b","isMergeCommit":false,"messageTitle":"add Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":0}}},{"hash":"becb9487eb9f0a0bf01963dee8ec11436715ea87","isMergeCommit":false,"messageTitle":"add Non Functional Requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}},{"hash":"429138a4c74d2c7c25e2684d96da1d473212a0fa","isMergeCommit":false,"messageTitle":"add Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":18}}},{"hash":"e048d515e5b258a819f4375d44838f78913d4393","isMergeCommit":false,"messageTitle":"add Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":7}}},{"hash":"b15947d7c3766ce335ba7b3e36ecd058a9f51425","isMergeCommit":false,"messageTitle":"update Non Functional Requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":15}}},{"hash":"2f8c14855a9af2eed6e93859a7be93a12a26beb0","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":4}}},{"hash":"cf3815e0be0e391e1020e0254c6d6cfee1d00e39","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"353228d8cc6c4489815ed83de4e8dfe9197c8033","isMergeCommit":true,"messageTitle":"Merge pull request #40 from NgZiXin/update-homepage","messageBody":"Update homepage","fileTypesAndContributionMap":{}},{"hash":"466cb03bca29c6384d5255ce7c21f0c7e13cd52f","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"79c34e87122f1415ebaa038f043f40a3635a1705","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"89b8d373f6dc21d7d420f55e2431d5354be7fcea","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"f268e60ee7cb17978abc2c40598bdbff37edb961","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]}],"KennyLewi":[{"date":"2024-09-25","commitResults":[{"hash":"5f4252aef03266f61f582c65a864f8e781ebbe9c","isMergeCommit":false,"messageTitle":"Update AboutUs.md for kenny","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":5}}},{"hash":"c872dbad300dd8e3cb4d65156f2d8b5567b8a7fc","isMergeCommit":false,"messageTitle":"Update AboutUs.md kenny portfolio","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"853a93ef66a3547a36077cfe2a516acdce25357a","isMergeCommit":false,"messageTitle":"Add meetup toString","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-11","commitResults":[{"hash":"d26db46d191b16ac5da735cb9826c4f6c0d5771a","isMergeCommit":false,"messageTitle":"Add meetup class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":129,"deletions":7}}}]},{"date":"2024-10-12","commitResults":[{"hash":"79db899e03bbd87f93eca8d89786fa7a9209adba","isMergeCommit":false,"messageTitle":"Create command to add meetups","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":21}}}]}],"ylchin":[{"date":"2024-09-25","commitResults":[{"hash":"4e9723e0e675145501b14a3a6b068b7641c0d964","isMergeCommit":false,"messageTitle":"Remove Does","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":49}}},{"hash":"2eda5ca07c603c1d9364bc7c941f7cd6fe4d7671","isMergeCommit":false,"messageTitle":"Revert \"Remove Does\"","messageBody":"This reverts commit 4e9723e0e675145501b14a3a6b068b7641c0d964.\n","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":0}}},{"hash":"f4c5a63d45a5260cd79fc68ef8132be3b65c0db2","isMergeCommit":false,"messageTitle":"Update Yi Ling\u0027s information in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":45}}},{"hash":"7bdbce3414dde3f1dc34cd95e06b5beb4dfa3702","isMergeCommit":false,"messageTitle":"Update newline at end of file for checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ef0bfc3384eb8f6394bba388a75d8ca970b98714","isMergeCommit":false,"messageTitle":"Create portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}},{"hash":"94a849be2ae9fb330a43476b2fa1e87b65728e28","isMergeCommit":false,"messageTitle":"Update link to portfolio in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-01","commitResults":[{"hash":"deffcdc7e4862d2a3b015afeb94ce1e88b7e928d","isMergeCommit":false,"messageTitle":"Update target user profile in Developer Guide","messageBody":"The current target user profile does not fully align with\nthe project’s selected direction and vision.\n\nUpdating the target user profile is necessary to ensure\nthat it accurately reflects the intended audience and\nthe project’s goals.\n\nUpdate the target user profile in the developer guide to\nmatch the selected project direction.\n\nThis change ensures that the documentation remains\nconsistent with the project’s objectives and target\naudience, providing clearer guidance to future developers.\n","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}},{"hash":"b1b3d74d145e32b6bab2e735e8e3b50e6db747e2","isMergeCommit":false,"messageTitle":"Update value proposition in Developer Guide","messageBody":"The current value proposition does not fully align with the\nproject’s selected direction and updated objectives.\n\nIt needs to be revised to ensure that it accurately communicates\nthe unique benefits and focus of the project.\n\nUpdate the value proposition in the developer guide to reflect\nthe selected project direction.\n\nThis update is necessary to ensure the value proposition is\nconsistent with the project’s current goals and target audience,\nproviding clear messaging to stakeholders.\n\nNo other changes are included in this commit.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e8425b8dbb4955ebd9a32e04947f934bb253236a","isMergeCommit":false,"messageTitle":"Update user stories in Developer Guide","messageBody":"The current user stories in the developer guide do not fully\nreflect the project’s current scope and direction.\n\nThese stories need to be updated to accurately represent the\nneeds and goals of the target users and to ensure alignment\nwith the project’s objectives.\n\nUpdate the user stories in the developer guide to match the\nselected project direction, refining the use cases and\nrequirements.\n\nThis update is done to maintain consistency and ensure the\ndocumentation reflects the project’s goals, providing clear\nguidance for future development.\n\nNo other modifications are included in this commit.\n","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":10}}}]},{"date":"2024-10-02","commitResults":[{"hash":"936636ce2ad40b9c2d1d71540d11760fba7180bc","isMergeCommit":false,"messageTitle":"Update value proposition in Developer Guide","messageBody":"The current value proposition in the developer guide lacks\ndetail and does not fully articulate the project’s unique\noffering to its target users.\n\nA more detailed value proposition is needed to clearly explain\nhow the project stands out and how it benefits users in its\nspecific context.\n\nUpdate the value proposition in the developer guide to include\nmore detail, focusing on the unique advantages of the project\nand the specific needs it addresses for its target audience.\n\nThis update ensures that the developer guide provides a clear\nand compelling explanation of the project’s value, supporting\nfuture development and user engagement.\n\nNo other sections are affected by this change.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"aa24a1698f3362315d27e8ec4ffab43b2f505b75","isMergeCommit":true,"messageTitle":"Merge pull request #41 from NgZiXin/update-settings","messageBody":"Update settings","fileTypesAndContributionMap":{}},{"hash":"f14273e557521871034f4077cdecbf6386614f8b","isMergeCommit":true,"messageTitle":"Merge pull request #46 from CreditableX/branch-NonFunctionalRequirements","messageBody":"Add Non-Functional Requirements","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"298b9aff2bdcd0613fbd6e37e66fd128119c2070","isMergeCommit":false,"messageTitle":"Refactor code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":7,"deletions":7},"test-code":{"insertions":6,"deletions":6}}}]}],"NgZiXin":[{"date":"2024-09-25","commitResults":[{"hash":"68cd6880981e3a87432963eaac86a462f6cfdf7e","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":46}}},{"hash":"e30dce12d76ef7532158e6deea5a284c3807f18d","isMergeCommit":true,"messageTitle":"Merge pull request #20 from CreditableX/A-UpdateAboutUs","messageBody":"Update AboutUs for Meng","fileTypesAndContributionMap":{}},{"hash":"1ee3fb5842d2a7b8cb1e747ce7d1fa040b9bc755","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":42}}}]},{"date":"2024-10-01","commitResults":[{"hash":"fb7fdb4ba59564968a74dd73b638682a546d338a","isMergeCommit":false,"messageTitle":"Update website homepage application description and project acknowledgements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"9ffb77f02fe57e405d1e84d5dae564e435afb08e","isMergeCommit":false,"messageTitle":"Update website homepage application description and project acknowledgements","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"cc904997ed09e551ae696124f40e4ade5bf9affd","isMergeCommit":false,"messageTitle":"Update repo link","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"c3f238e2913696c1236acc72421f446f9da8e002","isMergeCommit":false,"messageTitle":"Update user guide context to match ABCLI","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":10}}},{"hash":"d5646d3c11943608600a418cfd738952193349ca","isMergeCommit":false,"messageTitle":"Update user guide expected features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":2}}},{"hash":"2b5242be20b1feb61a27020c4e3da43c8678c260","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":11}}},{"hash":"f1faebcbc9dcaaa5861fa079c084afd3ca3b1f87","isMergeCommit":false,"messageTitle":"Format Page layout","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"6de8ab4ac07984dc70b350988a6915a1f5d28242","isMergeCommit":false,"messageTitle":"Format Page layout","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}}]},{"date":"2024-10-02","commitResults":[{"hash":"f3e1273488d7a9396cb1d2a56e212931c9ef6ec9","isMergeCommit":true,"messageTitle":"Merge pull request #35 from ylchin/add-target-user","messageBody":"Update target user profile in Developer Guide","fileTypesAndContributionMap":{}},{"hash":"08031fba066a56cb5d953a8343852dbcf8657186","isMergeCommit":true,"messageTitle":"Merge pull request #37 from ylchin/add-user-stories","messageBody":"Update user stories in Developer Guide","fileTypesAndContributionMap":{}},{"hash":"034e148f5d3a6794ba1bb0f2a24d4b3581e1dc57","isMergeCommit":true,"messageTitle":"Merge pull request #36 from ylchin/add-value-proposition","messageBody":"Update value proposition in Developer Guide","fileTypesAndContributionMap":{}},{"hash":"9409e31e8cb4925c244dd6e762c1923b0a643d1d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Glossary","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9afb4232b68174aa1aa09c4ad38379d02ccc8df9","isMergeCommit":true,"messageTitle":"Merge pull request #50 from CreditableX/branch-Glossary","messageBody":"Add Glossary","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"5a56910589a86149da31aaffc685976ddee6e0f6","isMergeCommit":true,"messageTitle":"Merge pull request #49 from Solomon0519/tP-UseCases","messageBody":"Edit use cases for DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"30412d29786408363aafe8a3c8fa150849fbcc68","isMergeCommit":true,"messageTitle":"Merge pull request #51 from KennyLewi/add-ui-mockup","messageBody":"Add ui mockup","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"61cfc05f2c3f4ba198080b4505547e6d93f49cc1","isMergeCommit":false,"messageTitle":"Add client type to contacts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":164,"deletions":9},"test-code":{"insertions":71,"deletions":33}}},{"hash":"cc5a3635b5f4180411151e69a28bb705a157d307","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":18}}},{"hash":"ceff85ce06dd7123c6d89729569d9f5a9b88eb89","isMergeCommit":true,"messageTitle":"Merge pull request #55 from Solomon0519/tP-UseCases","messageBody":"Touch up use cases for Develop","fileTypesAndContributionMap":{}},{"hash":"bdc00d02b506521f2d878cd218e389514c437c1a","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":7,"deletions":4}}},{"hash":"025604b553f109693d433ee8b582797a0be12559","isMergeCommit":false,"messageTitle":"Add Schedule and MeetUp class skeleton","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":147,"deletions":0}}}]},{"date":"2024-10-10","commitResults":[{"hash":"0948cf346dbd131a0a7acc31b8e60f5283efdd7b","isMergeCommit":true,"messageTitle":"Merge pull request #61 from ylchin/refactor-code","messageBody":"Closes #60","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"418e8abe3e4fd115f07dcc9ecb62be4918cfdca9","isMergeCommit":true,"messageTitle":"Merge pull request #65 from KennyLewi/add-meetup-command","messageBody":"Add meetup toString","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Solomon0519":{"docs":79,"functional-code":0,"test-code":0},"CreditableX":{"docs":62,"functional-code":0,"test-code":0},"KennyLewi":{"docs":52,"functional-code":187,"test-code":0},"ylchin":{"docs":48,"functional-code":6,"test-code":10},"NgZiXin":{"docs":57,"functional-code":300,"test-code":78,"other":3}},"authorContributionVariance":{"Solomon0519":2046.7787,"CreditableX":1270.8662,"KennyLewi":1190.1249,"ylchin":1732.5925,"NgZiXin":9348.685},"authorDisplayNameMap":{"Solomon0519":"CS2103T-F13-2 NG E..SWEN","CreditableX":"CS2103T-F13-2 YIOW..OONG","KennyLewi":"CS2103T-F13-2 KENN..LEWI","ylchin":"CS2103T-F13-2 CHIN..LING","NgZiXin":"CS2103T-F13-2 NG Z.. XIN"}} +{"authorDailyContributionsMap":{"Solomon0519":[{"date":"2024-09-25","commitResults":[{"hash":"019bb6c81f590ce5959ef99d94ece258f0c2c706","isMergeCommit":false,"messageTitle":"Edit AboutUs for team roles and reponsibility","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":42}}},{"hash":"ff2af10aa0618b2d935d5f06abfd4c43646be589","isMergeCommit":false,"messageTitle":"Edit AboutUs for team roles and reponsibility","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"ed5e494404d25626cff1564ac308409b4025bcd9","isMergeCommit":false,"messageTitle":"Edit AboutUs for team roles and reponsibility","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-02","commitResults":[{"hash":"782cf42496199b83682e72abc1953bc77887f887","isMergeCommit":false,"messageTitle":"Edit use cases for Develop","messageBody":"Added 3 use cases, namely for adding a contact, deleting a contact and adding a meetup.\n","fileTypesAndContributionMap":{"docs":{"insertions":116,"deletions":13}}},{"hash":"412951930ecea54d2a31df7764c7d6bb5affd725","isMergeCommit":true,"messageTitle":"Merge pull request #39 from NgZiXin/update-readme","messageBody":"Update README","fileTypesAndContributionMap":{}},{"hash":"0a736acabbbf083fe5540191d801ab8979a3884f","isMergeCommit":true,"messageTitle":"Merge pull request #42 from NgZiXin/add-expected-updates-userguide","messageBody":"Add expected updates userguide","fileTypesAndContributionMap":{}},{"hash":"6c906adf7d0ab83f4120d142b51868cf83aa8ca2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-userguide-context","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8f6a28f8b408176b467ce9fd5365f0b0df83343b","isMergeCommit":true,"messageTitle":"Merge pull request #43 from NgZiXin/update-userguide-context","messageBody":"Update user guide context to match ABCLI","fileTypesAndContributionMap":{}},{"hash":"c56df3f9ec802cd7b397f6980d680199f551e8d4","isMergeCommit":false,"messageTitle":"Edit use cases for Develop","messageBody":"Added 3 use cases, namely for adding a contact, deleting a contact and adding a meetup.\n","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":6}}}]},{"date":"2024-10-09","commitResults":[{"hash":"6d81889dbf198632da2adfef71c2eb77378a645b","isMergeCommit":false,"messageTitle":"Touch up use cases for Develop","messageBody":"Reformat the use cases according to guidelines.\n","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":106}}}]},{"date":"2024-10-10","commitResults":[{"hash":"7bdc60a3a53edf84e10b5802d820955cc1db1b1f","isMergeCommit":true,"messageTitle":"Merge pull request #57 from NgZiXin/add-client-type","messageBody":"Add client type","fileTypesAndContributionMap":{}},{"hash":"0c81376ba6ddeed1472a9ab4bb92bfbf45900448","isMergeCommit":true,"messageTitle":"Merge pull request #59 from NgZiXin/add-schedule","messageBody":"Add Schedule and MeetUp class skeleton","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"bc1e09e3f9eb337eab378102eb789e2afe2e8d26","isMergeCommit":true,"messageTitle":"Merge pull request #72 from KennyLewi/add-meetup-class","messageBody":"Add meetup class","fileTypesAndContributionMap":{}}]}],"CreditableX":[{"date":"2024-09-25","commitResults":[{"hash":"98bdf4ed0c782b63ff6fbe72ea7660defb3cba07","isMergeCommit":false,"messageTitle":"Add AboutUs for Meng","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":90}}},{"hash":"bba13d195aed4f5ec3b46be4ff287b605613a51a","isMergeCommit":false,"messageTitle":"Add AboutUs for Meng","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"55717d78f10b387a90c85c97d5b62743470125ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into A-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"807c3c262548445056defdf8078bd8f55d049a0b","isMergeCommit":true,"messageTitle":"Merge pull request #27 from Solomon0519/A-AboutUs","messageBody":"Edit team roles and responsibility","fileTypesAndContributionMap":{}},{"hash":"7c9649ebf82e83ea10041f9587b41fcef20f0f68","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"64eed5951255091b817fb2b7c8face68fb2f8f39","isMergeCommit":true,"messageTitle":"Merge pull request #22 from KennyLewi/update-aboutus","messageBody":"Update AboutUs.md for kenny","fileTypesAndContributionMap":{}},{"hash":"2c72009ca91bc8e58eec16cf28340c1fa59d8e4c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-yiLing-info","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"51e07a737d2598d1a3e656f10214a942cb7ad9f3","isMergeCommit":true,"messageTitle":"Merge pull request #26 from ylchin/add-yiLing-info","messageBody":"Add Yi Ling\u0027s information in AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"343f45084a33fec3a38d4c45641b4ae3281eafba","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into A-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2245f1faae6dbe9e75512b7b89be1d032a76e2db","isMergeCommit":true,"messageTitle":"Merge pull request #24 from NgZiXin/A-AboutUs","messageBody":"Update AboutUs page","tags":["v1.0"],"fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"5f7bf577acf59dc4da16a965ca7e32ea03d1858b","isMergeCommit":false,"messageTitle":"Add Non-Functional Requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":20,"deletions":0}}},{"hash":"7f4da25ff459b66c05d953a9195999d4a305705b","isMergeCommit":false,"messageTitle":"add Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":0}}},{"hash":"becb9487eb9f0a0bf01963dee8ec11436715ea87","isMergeCommit":false,"messageTitle":"add Non Functional Requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}},{"hash":"429138a4c74d2c7c25e2684d96da1d473212a0fa","isMergeCommit":false,"messageTitle":"add Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":18}}},{"hash":"e048d515e5b258a819f4375d44838f78913d4393","isMergeCommit":false,"messageTitle":"add Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":7}}},{"hash":"b15947d7c3766ce335ba7b3e36ecd058a9f51425","isMergeCommit":false,"messageTitle":"update Non Functional Requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":15}}},{"hash":"2f8c14855a9af2eed6e93859a7be93a12a26beb0","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":4}}},{"hash":"cf3815e0be0e391e1020e0254c6d6cfee1d00e39","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"353228d8cc6c4489815ed83de4e8dfe9197c8033","isMergeCommit":true,"messageTitle":"Merge pull request #40 from NgZiXin/update-homepage","messageBody":"Update homepage","fileTypesAndContributionMap":{}},{"hash":"466cb03bca29c6384d5255ce7c21f0c7e13cd52f","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"79c34e87122f1415ebaa038f043f40a3635a1705","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"89b8d373f6dc21d7d420f55e2431d5354be7fcea","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"f268e60ee7cb17978abc2c40598bdbff37edb961","isMergeCommit":false,"messageTitle":"update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-11","commitResults":[{"hash":"577eb86e21f6980ce697dc813a93b14c299ebccd","isMergeCommit":false,"messageTitle":"add skeleton","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0},"other":{"insertions":594,"deletions":0}}},{"hash":"52c2e5d4457777d64b4da9df3732e40092a17463","isMergeCommit":false,"messageTitle":"update filter meetup","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":36,"deletions":6}}},{"hash":"bbc5b1bb07c21b94ac7d0efcc56797cc6c30aac0","isMergeCommit":false,"messageTitle":"add to filter meetup command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":9}}},{"hash":"ffcd960b584b071516be9fd2e5911ebb2a78b223","isMergeCommit":false,"messageTitle":"update files to fit stylechecks","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-12","commitResults":[{"hash":"ba99d27835f4370830dee4b84ff5a7f3f09e6b52","isMergeCommit":false,"messageTitle":"update filter meetup command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":5},"test-code":{"insertions":0,"deletions":0}}},{"hash":"7863a2645eccab32a4ea1e00db149709b6343daa","isMergeCommit":false,"messageTitle":"continue work on meetup view and filter","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":10}}},{"hash":"18c6cb164311e7413456fcb33697a87d52590f44","isMergeCommit":false,"messageTitle":"continue work on meetup view and filter","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"3d82ffb2f84db698b78fbc6fbcd0fbfb318c1524","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-filterMeetups","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"32df5943a0d672c72553ab0c3383042bc8772545","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-filterMeetups\u0027 of https://github.com/CreditableX/tp into branch-filterMeetups","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a538e6a08a99ac4667683fc942711fdf6f27ca34","isMergeCommit":false,"messageTitle":"change functions to fit new pr","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"9e8bc279840db76d8f34ea9c274aa66ee6c5693b","isMergeCommit":false,"messageTitle":"add javadoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"fbcbafc6e6395a5d3f049463442e68be6c174f6e","isMergeCommit":false,"messageTitle":"fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"677dc7f1789b4f18d260b8eb1e7065e518a7edce","isMergeCommit":false,"messageTitle":"fix broken files from pull","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":0}}},{"hash":"d2a091cb24ed3acb1fbf5a894344d623bc797add","isMergeCommit":false,"messageTitle":"remove bin","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":594}}},{"hash":"0d3f443049087edd7af63f105b867e46945632c7","isMergeCommit":true,"messageTitle":"Merge pull request #63 from ylchin/view-filter","messageBody":"Enable filtering by person type in view","fileTypesAndContributionMap":{}}]}],"KennyLewi":[{"date":"2024-09-25","commitResults":[{"hash":"5f4252aef03266f61f582c65a864f8e781ebbe9c","isMergeCommit":false,"messageTitle":"Update AboutUs.md for kenny","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":5}}},{"hash":"c872dbad300dd8e3cb4d65156f2d8b5567b8a7fc","isMergeCommit":false,"messageTitle":"Update AboutUs.md kenny portfolio","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"853a93ef66a3547a36077cfe2a516acdce25357a","isMergeCommit":false,"messageTitle":"Add meetup toString","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-11","commitResults":[{"hash":"d26db46d191b16ac5da735cb9826c4f6c0d5771a","isMergeCommit":false,"messageTitle":"Add meetup class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":129,"deletions":7}}}]},{"date":"2024-10-12","commitResults":[{"hash":"79db899e03bbd87f93eca8d89786fa7a9209adba","isMergeCommit":false,"messageTitle":"Create command to add meetups","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":75,"deletions":21}}}]}],"ylchin":[{"date":"2024-09-25","commitResults":[{"hash":"4e9723e0e675145501b14a3a6b068b7641c0d964","isMergeCommit":false,"messageTitle":"Remove Does","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":49}}},{"hash":"2eda5ca07c603c1d9364bc7c941f7cd6fe4d7671","isMergeCommit":false,"messageTitle":"Revert \"Remove Does\"","messageBody":"This reverts commit 4e9723e0e675145501b14a3a6b068b7641c0d964.\n","fileTypesAndContributionMap":{"docs":{"insertions":49,"deletions":0}}},{"hash":"f4c5a63d45a5260cd79fc68ef8132be3b65c0db2","isMergeCommit":false,"messageTitle":"Update Yi Ling\u0027s information in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":45}}},{"hash":"7bdbce3414dde3f1dc34cd95e06b5beb4dfa3702","isMergeCommit":false,"messageTitle":"Update newline at end of file for checkstyle","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ef0bfc3384eb8f6394bba388a75d8ca970b98714","isMergeCommit":false,"messageTitle":"Create portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}},{"hash":"94a849be2ae9fb330a43476b2fa1e87b65728e28","isMergeCommit":false,"messageTitle":"Update link to portfolio in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-01","commitResults":[{"hash":"deffcdc7e4862d2a3b015afeb94ce1e88b7e928d","isMergeCommit":false,"messageTitle":"Update target user profile in Developer Guide","messageBody":"The current target user profile does not fully align with\nthe project’s selected direction and vision.\n\nUpdating the target user profile is necessary to ensure\nthat it accurately reflects the intended audience and\nthe project’s goals.\n\nUpdate the target user profile in the developer guide to\nmatch the selected project direction.\n\nThis change ensures that the documentation remains\nconsistent with the project’s objectives and target\naudience, providing clearer guidance to future developers.\n","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":1}}},{"hash":"b1b3d74d145e32b6bab2e735e8e3b50e6db747e2","isMergeCommit":false,"messageTitle":"Update value proposition in Developer Guide","messageBody":"The current value proposition does not fully align with the\nproject’s selected direction and updated objectives.\n\nIt needs to be revised to ensure that it accurately communicates\nthe unique benefits and focus of the project.\n\nUpdate the value proposition in the developer guide to reflect\nthe selected project direction.\n\nThis update is necessary to ensure the value proposition is\nconsistent with the project’s current goals and target audience,\nproviding clear messaging to stakeholders.\n\nNo other changes are included in this commit.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e8425b8dbb4955ebd9a32e04947f934bb253236a","isMergeCommit":false,"messageTitle":"Update user stories in Developer Guide","messageBody":"The current user stories in the developer guide do not fully\nreflect the project’s current scope and direction.\n\nThese stories need to be updated to accurately represent the\nneeds and goals of the target users and to ensure alignment\nwith the project’s objectives.\n\nUpdate the user stories in the developer guide to match the\nselected project direction, refining the use cases and\nrequirements.\n\nThis update is done to maintain consistency and ensure the\ndocumentation reflects the project’s goals, providing clear\nguidance for future development.\n\nNo other modifications are included in this commit.\n","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":10}}}]},{"date":"2024-10-02","commitResults":[{"hash":"936636ce2ad40b9c2d1d71540d11760fba7180bc","isMergeCommit":false,"messageTitle":"Update value proposition in Developer Guide","messageBody":"The current value proposition in the developer guide lacks\ndetail and does not fully articulate the project’s unique\noffering to its target users.\n\nA more detailed value proposition is needed to clearly explain\nhow the project stands out and how it benefits users in its\nspecific context.\n\nUpdate the value proposition in the developer guide to include\nmore detail, focusing on the unique advantages of the project\nand the specific needs it addresses for its target audience.\n\nThis update ensures that the developer guide provides a clear\nand compelling explanation of the project’s value, supporting\nfuture development and user engagement.\n\nNo other sections are affected by this change.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"aa24a1698f3362315d27e8ec4ffab43b2f505b75","isMergeCommit":true,"messageTitle":"Merge pull request #41 from NgZiXin/update-settings","messageBody":"Update settings","fileTypesAndContributionMap":{}},{"hash":"f14273e557521871034f4077cdecbf6386614f8b","isMergeCommit":true,"messageTitle":"Merge pull request #46 from CreditableX/branch-NonFunctionalRequirements","messageBody":"Add Non-Functional Requirements","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"298b9aff2bdcd0613fbd6e37e66fd128119c2070","isMergeCommit":false,"messageTitle":"Refactor code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3},"other":{"insertions":7,"deletions":7},"test-code":{"insertions":6,"deletions":6}}},{"hash":"ccf7311c88e4655b71b0d3b0a5b76e5f618941cc","isMergeCommit":false,"messageTitle":"New class PersonFulfilsPredicate determines whether PersonType matches given keyword","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":38,"deletions":0}}},{"hash":"7b768362e00cff7bf3d89ae501a428e72d2937cc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into view-filter","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7309ac61029099d37650a71ca8a0b4f99429a18a","isMergeCommit":false,"messageTitle":"Add ViewCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":0}}},{"hash":"e533c3b4d20d25927c73681985ceeefd5fa5bfa8","isMergeCommit":false,"messageTitle":"Enable filtering by person type in view","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":34,"deletions":5}}},{"hash":"5dec3b22b90744950cad46c23d4ea6fea46b56a9","isMergeCommit":false,"messageTitle":"Catch when keyword for ViewCommand is invalid","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":1}}},{"hash":"5c08bfd28542b67ab720022f8a37cd4a0211c821","isMergeCommit":false,"messageTitle":"Add toString method for ViewCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0}}},{"hash":"899c15d5789fead665450eb55bb4a4dca936be22","isMergeCommit":false,"messageTitle":"Update tests in ViewCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":62,"deletions":7}}},{"hash":"ef3ec4fbf769c5cf2bea58647372e503a09e2981","isMergeCommit":false,"messageTitle":"remove unused import in ViewCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}}]},{"date":"2024-10-11","commitResults":[{"hash":"db9dc19e6c0e1edac00f5e0e0dade96de7e4871e","isMergeCommit":false,"messageTitle":"Update existing test files","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":6}}}]}],"NgZiXin":[{"date":"2024-09-25","commitResults":[{"hash":"68cd6880981e3a87432963eaac86a462f6cfdf7e","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":46}}},{"hash":"e30dce12d76ef7532158e6deea5a284c3807f18d","isMergeCommit":true,"messageTitle":"Merge pull request #20 from CreditableX/A-UpdateAboutUs","messageBody":"Update AboutUs for Meng","fileTypesAndContributionMap":{}},{"hash":"1ee3fb5842d2a7b8cb1e747ce7d1fa040b9bc755","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":42}}}]},{"date":"2024-10-01","commitResults":[{"hash":"fb7fdb4ba59564968a74dd73b638682a546d338a","isMergeCommit":false,"messageTitle":"Update website homepage application description and project acknowledgements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"9ffb77f02fe57e405d1e84d5dae564e435afb08e","isMergeCommit":false,"messageTitle":"Update website homepage application description and project acknowledgements","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"cc904997ed09e551ae696124f40e4ade5bf9affd","isMergeCommit":false,"messageTitle":"Update repo link","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}},{"hash":"c3f238e2913696c1236acc72421f446f9da8e002","isMergeCommit":false,"messageTitle":"Update user guide context to match ABCLI","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":10}}},{"hash":"d5646d3c11943608600a418cfd738952193349ca","isMergeCommit":false,"messageTitle":"Update user guide expected features","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":33,"deletions":2}}},{"hash":"2b5242be20b1feb61a27020c4e3da43c8678c260","isMergeCommit":false,"messageTitle":"Update README","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":11}}},{"hash":"f1faebcbc9dcaaa5861fa079c084afd3ca3b1f87","isMergeCommit":false,"messageTitle":"Format Page layout","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"6de8ab4ac07984dc70b350988a6915a1f5d28242","isMergeCommit":false,"messageTitle":"Format Page layout","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":3}}}]},{"date":"2024-10-02","commitResults":[{"hash":"f3e1273488d7a9396cb1d2a56e212931c9ef6ec9","isMergeCommit":true,"messageTitle":"Merge pull request #35 from ylchin/add-target-user","messageBody":"Update target user profile in Developer Guide","fileTypesAndContributionMap":{}},{"hash":"08031fba066a56cb5d953a8343852dbcf8657186","isMergeCommit":true,"messageTitle":"Merge pull request #37 from ylchin/add-user-stories","messageBody":"Update user stories in Developer Guide","fileTypesAndContributionMap":{}},{"hash":"034e148f5d3a6794ba1bb0f2a24d4b3581e1dc57","isMergeCommit":true,"messageTitle":"Merge pull request #36 from ylchin/add-value-proposition","messageBody":"Update value proposition in Developer Guide","fileTypesAndContributionMap":{}},{"hash":"9409e31e8cb4925c244dd6e762c1923b0a643d1d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Glossary","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9afb4232b68174aa1aa09c4ad38379d02ccc8df9","isMergeCommit":true,"messageTitle":"Merge pull request #50 from CreditableX/branch-Glossary","messageBody":"Add Glossary","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"5a56910589a86149da31aaffc685976ddee6e0f6","isMergeCommit":true,"messageTitle":"Merge pull request #49 from Solomon0519/tP-UseCases","messageBody":"Edit use cases for DeveloperGuide.md","fileTypesAndContributionMap":{}},{"hash":"30412d29786408363aafe8a3c8fa150849fbcc68","isMergeCommit":true,"messageTitle":"Merge pull request #51 from KennyLewi/add-ui-mockup","messageBody":"Add ui mockup","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"61cfc05f2c3f4ba198080b4505547e6d93f49cc1","isMergeCommit":false,"messageTitle":"Add client type to contacts","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":164,"deletions":9},"test-code":{"insertions":71,"deletions":33}}},{"hash":"cc5a3635b5f4180411151e69a28bb705a157d307","isMergeCommit":false,"messageTitle":"Update UserGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":18}}},{"hash":"ceff85ce06dd7123c6d89729569d9f5a9b88eb89","isMergeCommit":true,"messageTitle":"Merge pull request #55 from Solomon0519/tP-UseCases","messageBody":"Touch up use cases for Develop","fileTypesAndContributionMap":{}},{"hash":"bdc00d02b506521f2d878cd218e389514c437c1a","isMergeCommit":false,"messageTitle":"Fix bugs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":7,"deletions":4}}},{"hash":"025604b553f109693d433ee8b582797a0be12559","isMergeCommit":false,"messageTitle":"Add Schedule and MeetUp class skeleton","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":147,"deletions":0}}}]},{"date":"2024-10-10","commitResults":[{"hash":"0948cf346dbd131a0a7acc31b8e60f5283efdd7b","isMergeCommit":true,"messageTitle":"Merge pull request #61 from ylchin/refactor-code","messageBody":"Closes #60","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"418e8abe3e4fd115f07dcc9ecb62be4918cfdca9","isMergeCommit":true,"messageTitle":"Merge pull request #65 from KennyLewi/add-meetup-command","messageBody":"Add meetup toString","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"da45caa56c61434831d7cc3d1288d4aeed9daae7","isMergeCommit":true,"messageTitle":"Merge pull request #69 from CreditableX/branch-filterMeetups","messageBody":"Add skeleton for view meetup","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Solomon0519":{"docs":79,"functional-code":0,"test-code":0},"CreditableX":{"docs":62,"functional-code":78,"test-code":7},"KennyLewi":{"docs":52,"functional-code":187,"test-code":0},"ylchin":{"docs":48,"functional-code":118,"test-code":72},"NgZiXin":{"docs":57,"functional-code":300,"test-code":78,"other":3}},"authorContributionVariance":{"Solomon0519":2046.7787,"CreditableX":35867.387,"KennyLewi":1190.1249,"ylchin":3643.9521,"NgZiXin":9348.685},"authorDisplayNameMap":{"Solomon0519":"CS2103T-F13-2 NG E..SWEN","CreditableX":"CS2103T-F13-2 YIOW..OONG","KennyLewi":"CS2103T-F13-2 KENN..LEWI","ylchin":"CS2103T-F13-2 CHIN..LING","NgZiXin":"CS2103T-F13-2 NG Z.. XIN"}} diff --git a/AY2425S1-CS2103T-F14b-1_tp_master/authorship.json b/AY2425S1-CS2103T-F14b-1_tp_master/authorship.json index c5c058bd..f1a25f94 100644 --- a/AY2425S1-CS2103T-F14b-1_tp_master/authorship.json +++ b/AY2425S1-CS2103T-F14b-1_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Gra7ityIC3"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-F14b-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F14b-1/tp/actions)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/github/AY2425S1-CS2103T-F14b-1/tp/graph/badge.svg?token\u003dMQKVUQZV24)](https://codecov.io/github/AY2425S1-CS2103T-F14b-1/tp)","lastModifiedDate":"2024-09-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Gra7ityIC3"},"content":"# SocialBook","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Gra7ityIC3"},"content":"SocialBook is a desktop application designed to simplify the workflow of social workers in contacting and assisting families in need.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Gra7ityIC3"},"content":"It allows them to easily prioritize which families need more help, where to get the help, and quickly navigate through family information.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"For more detailed documentation, visit the [SocialBook Product Website](https://ay2425s1-cs2103t-f14b-1.github.io/tp/).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Gra7ityIC3"},"content":"## Features","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Gra7ityIC3"},"content":"* **Prioritization**: Easily prioritize families who require more urgent assistance.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Gra7ityIC3"},"content":"* **Task Management**: Manage tasks and follow-up actions for each family in one place.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Gra7ityIC3"},"content":"* **Family Database**: Organize family contact details and case history efficiently.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Gra7ityIC3"},"content":"* **Navigation**: Quickly search and filter through families using intuitive commands.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Gra7ityIC3"},"content":"* **Resource Allocation**: Track and document resources allocated to families.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Gra7ityIC3"},"content":"## Acknowledgements","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":"This project is based on the AddressBook Level 3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":19,"-":4}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"### Clement Oh","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":"\u003cimg src\u003d\"images/gra7ityic3.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Gra7ityIC3"},"content":"[[github](https://github.com/Gra7ityIC3)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Gra7ityIC3"},"content":"* Role: Developer","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Gra7ityIC3"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LeongWZ"},"content":"### Wei Zhi","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LeongWZ"},"content":"\u003cimg src\u003d\"images/leongwz.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":"[[github](https://github.com/LeongWZ)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LeongWZ"},"content":"* Role: Developer","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LeongWZ"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":"### Vincent Ng","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":"\u003cimg src\u003d\"images/nws321.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Gra7ityIC3"},"content":"[[github](https://github.com/nws321)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Gra7ityIC3"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"arjun2598"},"content":"### Arjun Kumanan","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"arjun2598"},"content":"\u003cimg src\u003d\"images/arjun2598.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"arjun2598"},"content":"[[github](http://github.com/arjun2598)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"arjun2598"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"### Terence Wong","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"\u003cimg src\u003d\"images/terencewongsextravaganza.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"[[github](https://github.com/TerenceWongsExtravaganza)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Gra7ityIC3"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"arjun2598":4,"LeongWZ":4,"Gra7ityIC3":12,"-":37,"TerenceWongsExtravaganza":3}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"LeongWZ"},"content":"* is a social worker tasked with helping low-income families","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"LeongWZ"},"content":"**Value proposition**: streamlines the process of social workers contacting and assisting families","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"arjun2598"},"content":"| Priority | As a …​ | I can …​ | So that I can…​ |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"arjun2598"},"content":"|----------|---------------|--------------------------------------------------------------|--------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"arjun2598"},"content":"| `* * *` | new user | view the how to guide | familiarise myself with the functionalities of the app. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"arjun2598"},"content":"| `* * *` | social worker | add information of different families | keep track of families requiring assistance in one place. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"arjun2598"},"content":"| `* * *` | social worker | view the information of different families I have added | retrieve their information more quickly. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"arjun2598"},"content":"| `* * *` | social worker | delete the information of a family | remove the data of a family that I no longer need to keep track of. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"arjun2598"},"content":"| `* * *` | social worker | edit a family\u0027s information | keep their information up-to-date for future use. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | tag families | manage and organize families according to their needs. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | filter through the list of families | navigate the contact list more efficiently. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | sort families | view families in a more suitable order. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | toggle between list view and individual family view | focus on a specific family\u0027s information when I need to. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | create custom command aliases for frequently used commands | execute commands faster and reduce my typing effort. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | archive families that no longer need assistance | keep my contact list focused on active cases. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | see the overall statistics of families based on location | allocate my manpower better to areas with more help needed. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"arjun2598"},"content":"| `*` | social worker | synchronize the app with my personal calendar | view all my appointments and reminders in one place. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"arjun2598"},"content":"| `*` | social worker | attach documents or images to family profiles | make all relevant information accessible within each family’s contact details. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"arjun2598"},"content":"| `*` | social worker | generate and export reports on family progress or case notes | share updates with my team or supervisors efficiently. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"arjun2598"},"content":"| `*` | social worker | share contacts | allow multiple parties to assist the families at once. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"LeongWZ"},"content":"(For all use cases below, the **System** is the `SocialBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"LeongWZ"},"content":"**Use case: Add new family**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"LeongWZ"},"content":"1. User enters the command to add a family with the specified details","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"LeongWZ"},"content":"2. SocialBook adds the family and displays the newly added family","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"LeongWZ"},"content":"**Extensions:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"LeongWZ"},"content":"* 2a. SocialBook detects missing or invalid input.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"LeongWZ"},"content":" * 2a1. SocialBook displays an error message and prompts the user to try again","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"LeongWZ"},"content":" * 2a2. User corrects the input and enters the command again","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"LeongWZ"},"content":" Steps 2a1-2a2 are repeated until the user enters the correct input","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"LeongWZ"},"content":"* 2b. SocialBook detects a duplicate family entry.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"LeongWZ"},"content":" * 2b1. SocialBook displays an error message showing the duplicated family","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"LeongWZ"},"content":"**Use case: View information of different families**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"LeongWZ"},"content":"1. User enters the command to view all families","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"LeongWZ"},"content":"2. SocialBook displays all families whose info has been added","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"LeongWZ"},"content":"**Extensions:** ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"LeongWZ"},"content":"* 2a. No families have been added to SocialBook yet.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"LeongWZ"},"content":" * 2a1. SocialBook displays a message to inform the user that no family has been added by them yet","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"LeongWZ"},"content":"**Use case: Delete information of different families**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"LeongWZ"},"content":"1. User indicates family whose member they want to delete","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"LeongWZ"},"content":"2. SocialBook displays all family members in that family","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"LeongWZ"},"content":"3. User selects and deletes the member","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"LeongWZ"},"content":"4. SocialBook removes the member’s details from the display","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"LeongWZ"},"content":"\t","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"LeongWZ"},"content":"**Extensions:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"LeongWZ"},"content":"* 1a. SocialBook detects no such family exist in the list.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"LeongWZ"},"content":" * 1a1. SocialBook informs user that no such family exist in the list","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"LeongWZ"},"content":"\t ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"LeongWZ"},"content":"* 3a. User selects the primary contact of the family to be deleted.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"LeongWZ"},"content":"\t","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"LeongWZ"},"content":" * 3a1. SocialBook informs user they cannot delete primary contact and to swap it to someone else if they wish to do so","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"LeongWZ"},"content":"**Use case: Display command manual** ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"LeongWZ"},"content":"1. User keys in command to open command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"LeongWZ"},"content":"2. SocialBook displays command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"LeongWZ"},"content":"3. User keys in command to close command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"LeongWZ"},"content":"4. SocialBook displays previously shown screen","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"LeongWZ"},"content":"\t","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"LeongWZ"},"content":"**Extensions:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"LeongWZ"},"content":"* 1a. User chooses more detailed manual.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"LeongWZ"},"content":" * 1a1. SocialBook displays detailed command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"LeongWZ"},"content":" * 1a2. User keys in command to close command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"LeongWZ"},"content":" * 1a3. SocialBook displays previously shown screen","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"LeongWZ"},"content":"\t","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"LeongWZ"},"content":"**Use case: Edit existing information of a family**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"LeongWZ"},"content":"1. User chooses which information fields to update","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"LeongWZ"},"content":"2. User only enters the fields he wishes to update","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"LeongWZ"},"content":"3. SocialBook only updates the fields which user had updated and displays all information about the family","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"LeongWZ"},"content":"**Extensions:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"LeongWZ"},"content":"* 2a. SocialBook suggests a list of fields as user is typing input.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"LeongWZ"},"content":" * 2a1. User enters one field","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"LeongWZ"},"content":" * 2a2. SocialBook shows possible fields to be updated","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"LeongWZ"},"content":" * 2a3. User types finishes the field he wishes to update","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"LeongWZ"},"content":" * 2a4. SocialBook stops showing possible fields","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"LeongWZ"},"content":" * 2a5. User enters updated value","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"LeongWZ"},"content":" If User chooses to update other fields, repeat step 2a1-2a4.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"LeongWZ"},"content":" Otherwise, use case resumes from step 3.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"LeongWZ"},"content":" * 3a. SocialBook detects an error in the entered data.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"LeongWZ"},"content":" * 3a1. SocialBook should not update any fields","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"LeongWZ"},"content":" * 3a2. SocialBook displays errors encountered with respect to the field","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"nws321"},"content":"4. The system should be usable by a novice and does not require prior training.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"nws321"},"content":"5. Data that is to be deleted from the system is removed completely and not stored elsewhere.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"nws321"},"content":"6. The project is expected to adhere to the breadth-first iterative development.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"nws321"},"content":"7. Each command should take at most 10 seconds to executed.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"nws321"},"content":"* **API**: Application programming interfaces, which defines the standards and protocols that allow different software components to communicate with one another.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"nws321"},"content":"* **Custom command aliases**: Alternative command names that work the same if called as the actual command name.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"nws321"},"content":"* **Breadth-first iterative development**: Evolves all major components and functionality areas in parallel, producing a working product at the end of each iteration","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"arjun2598":18,"LeongWZ":118,"-":375,"nws321":7}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eSocialBook\u003c/a\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103T-F14b-1/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"-":65,"TerenceWongsExtravaganza":2}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"arjun2598"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"arjun2598"},"content":" ObservableList\u003cPerson\u003e getSortedPersonList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"arjun2598":2,"-":50}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"arjun2598"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"arjun2598"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"arjun2598"},"content":" public ObservableList\u003cPerson\u003e getSortedPersonList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"arjun2598"},"content":" return model.getSortedPersonList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"arjun2598"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"arjun2598":5,"-":88}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Gra7ityIC3"},"content":" .append(\"; Priority: \")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Gra7ityIC3"},"content":" .append(person.getPriority());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Gra7ityIC3"},"content":" String value \u003d person.getRemark().value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Gra7ityIC3"},"content":" if (!value.isEmpty()) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Gra7ityIC3"},"content":" builder.append(\"; Remark: \").append(value);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Gra7ityIC3"},"content":" Set\u003cTag\u003e tags \u003d person.getTags();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Gra7ityIC3"},"content":" if (!tags.isEmpty()) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" builder.append(\"; Tags: \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Gra7ityIC3"},"content":" tags.forEach(builder::append);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":15,"-":49}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":" + \"[\" + PREFIX_PRIORITY + \"PRIORITY \u003d LOW] \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK] \"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" + PREFIX_PRIORITY + \"HIGH \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" + PREFIX_REMARK + \"Promises to pay back next week. \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":6,"-":84}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"nws321"},"content":" /* Skeleton for deleting multiple index at once","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"nws321"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"nws321"},"content":" + \": Deletes the people identified by the index numbers used in the displayed person list.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"nws321"},"content":" + \"Parameters: INDEXES (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"nws321"},"content":" + \"Example: \" + COMMAND_WORD + \" 1, 2\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"nws321"},"content":" private final Index[] targetIndexes;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"nws321"},"content":" public static final String MESSAGE_DELETE_PEOPLE_SUCCESS \u003d \"Deleted People: %s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"nws321"},"content":" public DeleteCommand(Index... targetIndexes) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"nws321"},"content":" this.targetIndexes \u003d targetIndexes;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"nws321"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"nws321"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"nws321"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"nws321"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"nws321"},"content":" String s \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"nws321"},"content":" for (int i \u003d 0; i \u003c targetIndexes.size(); i++) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"nws321"},"content":" if (targetIndexes[i].getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"nws321"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"nws321"},"content":" Person personsToDelete\u003d lastShownList.get(targetIndexes[i].getZeroBased());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"nws321"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"nws321"},"content":" s +\u003d Messages.format(personToDelete);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"nws321"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PEOPLE_SUCCESS, s));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"nws321"},"content":" CONTINUE FROM HERE","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"nws321"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"nws321"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"nws321"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"nws321"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"nws321"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"nws321"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"nws321"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"nws321"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"nws321"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"nws321"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"nws321"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"nws321"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"nws321"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"nws321"},"content":" .toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"nws321"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":69,"nws321":57}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LeongWZ"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LeongWZ"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK]\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Gra7ityIC3"},"content":" Priority updatedPriority \u003d editPersonDescriptor.getPriority().orElse(personToEdit.getPriority());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Gra7ityIC3"},"content":" Remark updatedRemark \u003d editPersonDescriptor.getRemark().orElse(personToEdit.getRemark());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" updatedPriority, updatedRemark, updatedTags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Gra7ityIC3"},"content":" private Priority priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Gra7ityIC3"},"content":" private Remark remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Gra7ityIC3"},"content":" setPriority(toCopy.priority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Gra7ityIC3"},"content":" setRemark(toCopy.remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"LeongWZ"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, remark, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"Gra7ityIC3"},"content":" public void setPriority(Priority priority) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"Gra7ityIC3"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"Gra7ityIC3"},"content":" public Optional\u003cPriority\u003e getPriority() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"Gra7ityIC3"},"content":" return Optional.ofNullable(priority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"Gra7ityIC3"},"content":" public void setRemark(Remark remark) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"Gra7ityIC3"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"Gra7ityIC3"},"content":" public Optional\u003cRemark\u003e getRemark() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Gra7ityIC3"},"content":" return Optional.ofNullable(remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"Gra7ityIC3"},"content":" .add(\"priority\", priority)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"Gra7ityIC3"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"LeongWZ":3,"Gra7ityIC3":28,"-":240}},{"path":"src/main/java/seedu/address/logic/commands/ManualCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" * Format full instructions for every command for display.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"public class ManualCommand extends Command {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public static final String COMMAND_WORD \u003d \"manual\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows the user manual.\\n\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED \u003d \"Manual command not implemented\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public static final String SHOWING_MANUAL_MESSAGE \u003d \"Opened user manual.\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public ManualCommand() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"TerenceWongsExtravaganza":27}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Gra7ityIC3"},"content":" ArgumentTokenizer.tokenize(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" PREFIX_PRIORITY, PREFIX_REMARK, PREFIX_TAG);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Gra7ityIC3"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Gra7ityIC3"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_PRIORITY, PREFIX_REMARK);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Gra7ityIC3"},"content":" Priority priority \u003d ParserUtil.parsePriority(argMultimap.getValue(PREFIX_PRIORITY).orElse(\"LOW\"));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Gra7ityIC3"},"content":" Remark remark \u003d ParserUtil.parseRemark(argMultimap.getValue(PREFIX_REMARK).orElse(\"\"));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" Person person \u003d new Person(name, phone, email, address, priority, remark, tagList);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":12,"-":58}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"import seedu.address.logic.commands.ManualCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" case ManualCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" return new ManualCommand();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":86,"TerenceWongsExtravaganza":4}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Prefix PREFIX_PRIORITY \u003d new Prefix(\"pri/\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":2,"-":15}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"nws321"},"content":" /*","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"nws321"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"nws321"},"content":" try {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"nws321"},"content":" int size \u003d args.split(\",\").size();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"nws321"},"content":" Index[] indexArray \u003d new Index[size];","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"nws321"},"content":" for (int i \u003d 0; i \u003c size; i++) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"nws321"},"content":" ParserUtil.parseIndex(indexArray[i])[i];","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"nws321"},"content":" return new DeleteCommand(indexArray);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"nws321"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"nws321"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"nws321"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"nws321"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"-":29,"nws321":15}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LeongWZ"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LeongWZ"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LeongWZ"},"content":" PREFIX_REMARK);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"LeongWZ"},"content":" if (argMultimap.getValue(PREFIX_REMARK).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LeongWZ"},"content":" editPersonDescriptor.setRemark(ParserUtil.parseRemark(argMultimap.getValue(PREFIX_REMARK).get()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"LeongWZ":6,"-":84}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Gra7ityIC3"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Gra7ityIC3"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Gra7ityIC3"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Gra7ityIC3"},"content":" *","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Gra7ityIC3"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Gra7ityIC3"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Gra7ityIC3"},"content":" requireNonNull(email);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Gra7ityIC3"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Gra7ityIC3"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Gra7ityIC3"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Gra7ityIC3"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Gra7ityIC3"},"content":" * Parses a {@code String priority} into a {@code Priority}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Gra7ityIC3"},"content":" * @throws ParseException if the given {@code priority} is invalid.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Gra7ityIC3"},"content":" public static Priority parsePriority(String priority) throws ParseException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Gra7ityIC3"},"content":" requireNonNull(priority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Gra7ityIC3"},"content":" String trimmedPriority \u003d priority.trim().toUpperCase();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Gra7ityIC3"},"content":" try {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" return Priority.valueOf(trimmedPriority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Gra7ityIC3"},"content":" throw new ParseException(Priority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Gra7ityIC3"},"content":" * Parses a {@code String remark} into a {@code Remark}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Gra7ityIC3"},"content":" public static Remark parseRemark(String remark) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Gra7ityIC3"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Gra7ityIC3"},"content":" return new Remark(remark.trim());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":32,"-":119}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"arjun2598"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"arjun2598"},"content":" ObservableList\u003cPerson\u003e getSortedPersonList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"arjun2598"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"arjun2598"},"content":" // TO BE IMPLEMENTED","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"arjun2598"},"content":" // Updates the order in which the filtered contact list is sorted.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"arjun2598"},"content":" // void updateSortingOrder(String criterion); - Can use switch statements for criteria to sort by","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"arjun2598":6,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"arjun2598"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"arjun2598"},"content":"import javafx.collections.transformation.SortedList;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"arjun2598"},"content":" private final SortedList\u003cPerson\u003e sortedPersons;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"arjun2598"},"content":" sortedPersons \u003d new SortedList\u003c\u003e(filteredPersons); // sortedPersons is updated along with filteredPersons","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"arjun2598"},"content":" sortedPersons.setComparator(Comparator.comparing(Person::getPriority)); // sort by descending priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"arjun2598"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"arjun2598"},"content":" public ObservableList\u003cPerson\u003e getSortedPersonList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"arjun2598"},"content":" return sortedPersons;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"arjun2598"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"arjun2598"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"arjun2598":10,"-":148}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":" private final Priority priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Gra7ityIC3"},"content":" private final Remark remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" public Person(Name name, Phone phone, Email email, Address address,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" Priority priority, Remark remark, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Gra7ityIC3"},"content":" public Priority getPriority() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Gra7ityIC3"},"content":" return priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Gra7ityIC3"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Gra7ityIC3"},"content":" return remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" \u0026\u0026 priority.equals(otherPerson.priority)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" \u0026\u0026 remark.equals(otherPerson.remark)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Gra7ityIC3"},"content":" .add(\"priority\", priority)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Gra7ityIC3"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":18,"-":116}},{"path":"src/main/java/seedu/address/model/person/Priority.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gra7ityIC3"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Gra7ityIC3"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Gra7ityIC3"},"content":" * Represents a Person\u0027s priority in the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Gra7ityIC3"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Gra7ityIC3"},"content":"public enum Priority {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":" HIGH, MEDIUM, LOW;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Priority should be either HIGH, MEDIUM, or LOW\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":11}},{"path":"src/main/java/seedu/address/model/person/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gra7ityIC3"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Gra7ityIC3"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Gra7ityIC3"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Gra7ityIC3"},"content":" * Represents a Person\u0027s remark in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Gra7ityIC3"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"public class Remark {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Gra7ityIC3"},"content":" public final String value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Gra7ityIC3"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":" * Constructs a {@code Remark}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Gra7ityIC3"},"content":" *","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Gra7ityIC3"},"content":" * @param remark An optional remark.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Gra7ityIC3"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Gra7ityIC3"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Gra7ityIC3"},"content":" value \u003d remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Gra7ityIC3"},"content":" public String toString() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Gra7ityIC3"},"content":" return value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Gra7ityIC3"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Gra7ityIC3"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Gra7ityIC3"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":" return true;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Gra7ityIC3"},"content":" if (!(other instanceof Remark)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Gra7ityIC3"},"content":" return false;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" Remark otherRemark \u003d (Remark) other;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" return value.equals(otherRemark.value);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Gra7ityIC3"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Gra7ityIC3"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Gra7ityIC3"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":47}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Remark EMPTY_REMARK \u003d new Remark(\"\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), Priority.HIGH, new Remark(\"Likes baseball\"),","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), Priority.MEDIUM, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), Priority.LOW, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), Priority.HIGH, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), Priority.MEDIUM, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), Priority.LOW, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":11,"-":54}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" private final String priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" private final String remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" public JsonAdaptedPerson(","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"name\") String name,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"priority\") String priority,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"remark\") String remark,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Gra7ityIC3"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Gra7ityIC3"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" priority \u003d source.getPriority().name();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":" remark \u003d source.getRemark().value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Gra7ityIC3"},"content":" .toList());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Gra7ityIC3"},"content":" if (priority \u003d\u003d null) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Gra7ityIC3"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Gra7ityIC3"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, Priority.class.getSimpleName()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Gra7ityIC3"},"content":" final Priority modelPriority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Gra7ityIC3"},"content":" try {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Gra7ityIC3"},"content":" modelPriority \u003d Priority.valueOf(priority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Gra7ityIC3"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Gra7ityIC3"},"content":" throw new IllegalValueException(Priority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Gra7ityIC3"},"content":" final Remark modelRemark \u003d new Remark(remark \u003d\u003d null ? \"\" : remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Gra7ityIC3"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelPriority, modelRemark, modelTags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":30,"-":104}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).toList());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":1,"-":58}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"arjun2598"},"content":" personListPanel \u003d new PersonListPanel(logic.getSortedPersonList());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" personListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"arjun2598":1,"-":195}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Gra7ityIC3"},"content":" * A UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" private Label id;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" @FXML","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Gra7ityIC3"},"content":" private Label priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Gra7ityIC3"},"content":" private Label remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Gra7ityIC3"},"content":" @FXML","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Gra7ityIC3"},"content":" priority.getStyleClass().add(switch (person.getPriority()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Gra7ityIC3"},"content":" case HIGH -\u003e \"priority-high\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Gra7ityIC3"},"content":" case MEDIUM -\u003e \"priority-medium\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Gra7ityIC3"},"content":" case LOW -\u003e \"priority-low\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Gra7ityIC3"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Gra7ityIC3"},"content":" priority.setText(person.getPriority().name());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" String value \u003d person.getRemark().value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":" remark.setText(value);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Gra7ityIC3"},"content":" remark.setManaged(!value.isEmpty());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":18,"-":57}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Gra7ityIC3"},"content":"#priority {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-background-radius: 2em;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-border-radius: 2em;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-font-size: 14;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-padding: 0 10;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"Gra7ityIC3"},"content":".priority-high {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-background-color: #E53935;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-border-color: #ef9a9a;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Gra7ityIC3"},"content":".priority-medium {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-background-color: #FB8C00;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-border-color: #FFCC80;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Gra7ityIC3"},"content":".priority-low {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-background-color: #43A047;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-border-color: #A5D6A7;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":23,"-":352}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cLabel fx:id\u003d\"priority\" text\u003d\"\\$priority\"\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cInsets left\u003d\"4\" /\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":6,"-":36}},{"path":"src/main/resources/view/ResultDisplay.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"pane-with-border\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\" styleClass\u003d\"result-display\" wrapText\u003d\"true\"/\u003e","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":1,"-":8}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"arjun2598"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"arjun2598"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"arjun2598"},"content":" public ObservableList\u003cPerson\u003e getSortedPersonList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"arjun2598"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"arjun2598"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"arjun2598":5,"-":204}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String VALID_PRIORITY_AMY \u003d \"HIGH\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String VALID_PRIORITY_BOB \u003d \"MEDIUM\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String VALID_REMARK_AMY \u003d \"Loves Taylor Swift.\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String VALID_REMARK_BOB \u003d \"Supports Manchester United.\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String PRIORITY_DESC_AMY \u003d \" \" + PREFIX_PRIORITY + VALID_PRIORITY_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String PRIORITY_DESC_BOB \u003d \" \" + PREFIX_PRIORITY + VALID_PRIORITY_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String REMARK_DESC_AMY \u003d \" \" + PREFIX_REMARK + VALID_REMARK_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String REMARK_DESC_BOB \u003d \" \" + PREFIX_REMARK + VALID_REMARK_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String INVALID_PRIORITY_DESC \u003d \" \" + PREFIX_PRIORITY + \"CRITICAL\"; // no such priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":11,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LeongWZ"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"LeongWZ"},"content":" private void execute_specifiedRemarkField_shouldModifyRemark(String remarkString) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"LeongWZ"},"content":" Remark remark \u003d new Remark(remarkString);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"LeongWZ"},"content":" Person personToBeEdited \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LeongWZ"},"content":" Person personToBeExpected \u003d new Person(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getName(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getPhone(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getEmail(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getAddress(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"arjun2598"},"content":" personToBeEdited.getPriority(),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"LeongWZ"},"content":" remark,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getTags());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"LeongWZ"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"LeongWZ"},"content":" .withRemark(remark.value)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"LeongWZ"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"LeongWZ"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"LeongWZ"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"LeongWZ"},"content":" expectedModel.setPerson(personToBeEdited, personToBeExpected);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"LeongWZ"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"LeongWZ"},"content":" Messages.format(personToBeExpected));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"LeongWZ"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LeongWZ"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LeongWZ"},"content":" public void execute_specifiedRemarkField_shouldModifyRemark() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"LeongWZ"},"content":" execute_specifiedRemarkField_shouldModifyRemark(\"This is a remark!\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"LeongWZ"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"LeongWZ"},"content":" public void execute_specifiedEmptyRemarkField_shouldModifyRemark() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"LeongWZ"},"content":" execute_specifiedRemarkField_shouldModifyRemark(\"\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"arjun2598":1,"LeongWZ":39,"-":184}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", priority\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":" + editPersonDescriptor.getPriority().orElse(null) + \", remark\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Gra7ityIC3"},"content":" + editPersonDescriptor.getRemark().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":3,"-":70}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PRIORITY_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PRIORITY_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PRIORITY_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Gra7ityIC3"},"content":" private final AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Gra7ityIC3"},"content":" + ADDRESS_DESC_BOB + PRIORITY_DESC_BOB + REMARK_DESC_BOB + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Gra7ityIC3"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Gra7ityIC3"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Gra7ityIC3"},"content":" + PRIORITY_DESC_BOB + REMARK_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Gra7ityIC3"},"content":" + ADDRESS_DESC_BOB + PRIORITY_DESC_BOB + REMARK_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Gra7ityIC3"},"content":" // multiple priorities","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, PRIORITY_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PRIORITY));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Gra7ityIC3"},"content":" // multiple remarks","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, REMARK_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_REMARK));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Gra7ityIC3"},"content":" validExpectedPersonString + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Gra7ityIC3"},"content":" + ADDRESS_DESC_AMY + PRIORITY_DESC_AMY + REMARK_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Gra7ityIC3"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_PRIORITY, PREFIX_REMARK));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, INVALID_PRIORITY_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PRIORITY));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PRIORITY_DESC,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PRIORITY));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Gra7ityIC3"},"content":" // zero tags and no remark","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"Gra7ityIC3"},"content":" + INVALID_PRIORITY_DESC + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Priority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":48,"-":176}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LeongWZ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LeongWZ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"LeongWZ"},"content":" // remark","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"LeongWZ"},"content":" userInput \u003d targetIndex.getOneBased() + REMARK_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"LeongWZ"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withRemark(VALID_REMARK_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"LeongWZ"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"LeongWZ"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"LeongWZ":8,"-":208}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Gra7ityIC3"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getName() + \", phone\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getPhone() + \", email\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getEmail() + \", address\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getAddress() + \", priority\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getPriority() + \", remark\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getRemark() + \", tags\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":8,"-":97}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":" private static final String INVALID_PRIORITY \u003d \"CRITICAL\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" private static final String VALID_PRIORITY \u003d BENSON.getPriority().toString();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" private static final String VALID_REMARK \u003d BENSON.getRemark().toString();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Gra7ityIC3"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Gra7ityIC3"},"content":" public void toModelType_invalidPriority_throwsIllegalValueException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Gra7ityIC3"},"content":" INVALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Gra7ityIC3"},"content":" String expectedMessage \u003d Priority.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Gra7ityIC3"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Gra7ityIC3"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Gra7ityIC3"},"content":" public void toModelType_nullPriority_throwsIllegalValueException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Gra7ityIC3"},"content":" null, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Gra7ityIC3"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Priority.class.getSimpleName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Gra7ityIC3"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, invalidTags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":44,"-":101}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LeongWZ"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" descriptor.setPriority(person.getPriority());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" descriptor.setRemark(person.getRemark());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"LeongWZ"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LeongWZ"},"content":" * Sets the {@code Remark} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LeongWZ"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"LeongWZ"},"content":" public EditPersonDescriptorBuilder withRemark(String remark) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"LeongWZ"},"content":" descriptor.setRemark(new Remark(remark));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"LeongWZ"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"LeongWZ":9,"Gra7ityIC3":2,"-":87}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String DEFAULT_PRIORITY \u003d \"LOW\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String DEFAULT_REMARK \u003d \"\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" private Priority priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" private Remark remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Gra7ityIC3"},"content":" priority \u003d Priority.valueOf(DEFAULT_PRIORITY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Gra7ityIC3"},"content":" remark \u003d new Remark(DEFAULT_REMARK);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" priority \u003d personToCopy.getPriority();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Gra7ityIC3"},"content":" remark \u003d personToCopy.getRemark();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Gra7ityIC3"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Gra7ityIC3"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Gra7ityIC3"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Gra7ityIC3"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Gra7ityIC3"},"content":" * Sets the {@code Priority} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withPriority(String priority) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Gra7ityIC3"},"content":" this.priority \u003d Priority.valueOf(priority);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Gra7ityIC3"},"content":" * Sets the {@code Remark} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withRemark(String remark) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Gra7ityIC3"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Gra7ityIC3"},"content":" return this;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Gra7ityIC3"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Gra7ityIC3"},"content":" return new Person(name, phone, email, address, priority, remark, tags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":31,"-":91}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Gra7ityIC3"},"content":" sb.append(PREFIX_REMARK + person.getRemark().value + \" \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" person.getTags().forEach(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":3,"-":61}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRIORITY_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\").withPhone(\"94351253\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Gra7ityIC3"},"content":" .withEmail(\"alice@example.com\").withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Gra7ityIC3"},"content":" .withPriority(\"MEDIUM\").withRemark(\"She likes pygmy hippos.\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\").withPhone(\"98765432\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" .withEmail(\"johnd@example.com\").withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" .withPriority(\"HIGH\").withRemark(\"Promises to pay back next week.\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withPriority(VALID_PRIORITY_BOB)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Gra7ityIC3"},"content":" .withRemark(VALID_REMARK_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":10,"-":68}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Gra7ityIC3"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-F14b-1/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F14b-1/tp/actions)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/github/AY2425S1-CS2103T-F14b-1/tp/graph/badge.svg?token\u003dMQKVUQZV24)](https://codecov.io/github/AY2425S1-CS2103T-F14b-1/tp)","lastModifiedDate":"2024-09-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Gra7ityIC3"},"content":"# SocialBook","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Gra7ityIC3"},"content":"SocialBook is a desktop application designed to simplify the workflow of social workers in contacting and assisting families in need.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Gra7ityIC3"},"content":"It allows them to easily prioritize which families need more help, where to get the help, and quickly navigate through family information.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"For more detailed documentation, visit the [SocialBook Product Website](https://ay2425s1-cs2103t-f14b-1.github.io/tp/).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Gra7ityIC3"},"content":"## Features","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Gra7ityIC3"},"content":"* **Prioritization**: Easily prioritize families who require more urgent assistance.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Gra7ityIC3"},"content":"* **Task Management**: Manage tasks and follow-up actions for each family in one place.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Gra7ityIC3"},"content":"* **Family Database**: Organize family contact details and case history efficiently.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Gra7ityIC3"},"content":"* **Navigation**: Quickly search and filter through families using intuitive commands.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Gra7ityIC3"},"content":"* **Resource Allocation**: Track and document resources allocated to families.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Gra7ityIC3"},"content":"## Acknowledgements","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":"This project is based on the AddressBook Level 3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":19,"-":4}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"### Clement Oh","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":"\u003cimg src\u003d\"images/gra7ityic3.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Gra7ityIC3"},"content":"[[github](https://github.com/Gra7ityIC3)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Gra7ityIC3"},"content":"* Role: Developer","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Gra7ityIC3"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"LeongWZ"},"content":"### Wei Zhi","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LeongWZ"},"content":"\u003cimg src\u003d\"images/leongwz.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":"[[github](https://github.com/LeongWZ)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"LeongWZ"},"content":"* Role: Developer","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"LeongWZ"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":"### Vincent Ng","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":"\u003cimg src\u003d\"images/nws321.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Gra7ityIC3"},"content":"[[github](https://github.com/nws321)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Gra7ityIC3"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"arjun2598"},"content":"### Arjun Kumanan","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"arjun2598"},"content":"\u003cimg src\u003d\"images/arjun2598.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"arjun2598"},"content":"[[github](http://github.com/arjun2598)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"arjun2598"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"### Terence Wong","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"\u003cimg src\u003d\"images/terencewongsextravaganza.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"[[github](https://github.com/TerenceWongsExtravaganza)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Gra7ityIC3"},"content":"* Responsibilities: TBC","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"arjun2598":4,"LeongWZ":4,"Gra7ityIC3":12,"-":37,"TerenceWongsExtravaganza":3}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"LeongWZ"},"content":"* is a social worker tasked with helping low-income families","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"LeongWZ"},"content":"**Value proposition**: streamlines the process of social workers contacting and assisting families","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"arjun2598"},"content":"| Priority | As a …​ | I can …​ | So that I can…​ |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"arjun2598"},"content":"|----------|---------------|--------------------------------------------------------------|--------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"arjun2598"},"content":"| `* * *` | new user | view the how to guide | familiarise myself with the functionalities of the app. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"arjun2598"},"content":"| `* * *` | social worker | add information of different families | keep track of families requiring assistance in one place. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"arjun2598"},"content":"| `* * *` | social worker | view the information of different families I have added | retrieve their information more quickly. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"arjun2598"},"content":"| `* * *` | social worker | delete the information of a family | remove the data of a family that I no longer need to keep track of. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"arjun2598"},"content":"| `* * *` | social worker | edit a family\u0027s information | keep their information up-to-date for future use. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | tag families | manage and organize families according to their needs. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | filter through the list of families | navigate the contact list more efficiently. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | sort families | view families in a more suitable order. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | toggle between list view and individual family view | focus on a specific family\u0027s information when I need to. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | create custom command aliases for frequently used commands | execute commands faster and reduce my typing effort. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | archive families that no longer need assistance | keep my contact list focused on active cases. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"arjun2598"},"content":"| `* *` | social worker | see the overall statistics of families based on location | allocate my manpower better to areas with more help needed. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"arjun2598"},"content":"| `*` | social worker | synchronize the app with my personal calendar | view all my appointments and reminders in one place. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"arjun2598"},"content":"| `*` | social worker | attach documents or images to family profiles | make all relevant information accessible within each family’s contact details. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"arjun2598"},"content":"| `*` | social worker | generate and export reports on family progress or case notes | share updates with my team or supervisors efficiently. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"arjun2598"},"content":"| `*` | social worker | share contacts | allow multiple parties to assist the families at once. |","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"LeongWZ"},"content":"(For all use cases below, the **System** is the `SocialBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"LeongWZ"},"content":"**Use case: Add new family**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"LeongWZ"},"content":"1. User enters the command to add a family with the specified details","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"LeongWZ"},"content":"2. SocialBook adds the family and displays the newly added family","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"LeongWZ"},"content":"**Extensions:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"LeongWZ"},"content":"* 2a. SocialBook detects missing or invalid input.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"LeongWZ"},"content":" * 2a1. SocialBook displays an error message and prompts the user to try again","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"LeongWZ"},"content":" * 2a2. User corrects the input and enters the command again","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"LeongWZ"},"content":" Steps 2a1-2a2 are repeated until the user enters the correct input","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"LeongWZ"},"content":"* 2b. SocialBook detects a duplicate family entry.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"LeongWZ"},"content":" * 2b1. SocialBook displays an error message showing the duplicated family","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"LeongWZ"},"content":"**Use case: View information of different families**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"LeongWZ"},"content":"1. User enters the command to view all families","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"LeongWZ"},"content":"2. SocialBook displays all families whose info has been added","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"LeongWZ"},"content":"**Extensions:** ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"LeongWZ"},"content":"* 2a. No families have been added to SocialBook yet.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"LeongWZ"},"content":" * 2a1. SocialBook displays a message to inform the user that no family has been added by them yet","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"LeongWZ"},"content":"**Use case: Delete information of different families**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"LeongWZ"},"content":"1. User indicates family whose member they want to delete","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"LeongWZ"},"content":"2. SocialBook displays all family members in that family","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"LeongWZ"},"content":"3. User selects and deletes the member","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"LeongWZ"},"content":"4. SocialBook removes the member’s details from the display","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"LeongWZ"},"content":"\t","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"LeongWZ"},"content":"**Extensions:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"LeongWZ"},"content":"* 1a. SocialBook detects no such family exist in the list.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"LeongWZ"},"content":" * 1a1. SocialBook informs user that no such family exist in the list","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"LeongWZ"},"content":"\t ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"LeongWZ"},"content":"* 3a. User selects the primary contact of the family to be deleted.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"LeongWZ"},"content":"\t","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"LeongWZ"},"content":" * 3a1. SocialBook informs user they cannot delete primary contact and to swap it to someone else if they wish to do so","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"LeongWZ"},"content":"**Use case: Display command manual** ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"LeongWZ"},"content":"1. User keys in command to open command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"LeongWZ"},"content":"2. SocialBook displays command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"LeongWZ"},"content":"3. User keys in command to close command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"LeongWZ"},"content":"4. SocialBook displays previously shown screen","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"LeongWZ"},"content":"\t","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"LeongWZ"},"content":"**Extensions:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"LeongWZ"},"content":"* 1a. User chooses more detailed manual.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"LeongWZ"},"content":" * 1a1. SocialBook displays detailed command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"LeongWZ"},"content":" * 1a2. User keys in command to close command manual","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"LeongWZ"},"content":" * 1a3. SocialBook displays previously shown screen","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"LeongWZ"},"content":"\t","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"LeongWZ"},"content":"**Use case: Edit existing information of a family**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"LeongWZ"},"content":"**MSS:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"LeongWZ"},"content":"1. User chooses which information fields to update","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"LeongWZ"},"content":"2. User only enters the fields he wishes to update","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"LeongWZ"},"content":"3. SocialBook only updates the fields which user had updated and displays all information about the family","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"LeongWZ"},"content":"**Extensions:**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"LeongWZ"},"content":"* 2a. SocialBook suggests a list of fields as user is typing input.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"LeongWZ"},"content":" * 2a1. User enters one field","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"LeongWZ"},"content":" * 2a2. SocialBook shows possible fields to be updated","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"LeongWZ"},"content":" * 2a3. User types finishes the field he wishes to update","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"LeongWZ"},"content":" * 2a4. SocialBook stops showing possible fields","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"LeongWZ"},"content":" * 2a5. User enters updated value","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"LeongWZ"},"content":" If User chooses to update other fields, repeat step 2a1-2a4.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"LeongWZ"},"content":" Otherwise, use case resumes from step 3.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"LeongWZ"},"content":" * 3a. SocialBook detects an error in the entered data.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"LeongWZ"},"content":" * 3a1. SocialBook should not update any fields","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"LeongWZ"},"content":" * 3a2. SocialBook displays errors encountered with respect to the field","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"LeongWZ"},"content":" ","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"LeongWZ"},"content":" Use case ends.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"nws321"},"content":"4. The system should be usable by a novice and does not require prior training.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"nws321"},"content":"5. Data that is to be deleted from the system is removed completely and not stored elsewhere.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"nws321"},"content":"6. The project is expected to adhere to the breadth-first iterative development.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"nws321"},"content":"7. Each command should take at most 10 seconds to executed.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"nws321"},"content":"* **API**: Application programming interfaces, which defines the standards and protocols that allow different software components to communicate with one another.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"nws321"},"content":"* **Custom command aliases**: Alternative command names that work the same if called as the actual command name.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"nws321"},"content":"* **Breadth-first iterative development**: Evolves all major components and functionality areas in parallel, producing a working product at the end of each iteration","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"arjun2598":18,"LeongWZ":118,"-":375,"nws321":7}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eSocialBook\u003c/a\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103T-F14b-1/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"-":65,"TerenceWongsExtravaganza":2}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Gra7ityIC3"},"content":" .append(\"; Priority: \")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Gra7ityIC3"},"content":" .append(person.getPriority());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Gra7ityIC3"},"content":" String value \u003d person.getRemark().value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Gra7ityIC3"},"content":" if (!value.isEmpty()) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Gra7ityIC3"},"content":" builder.append(\"; Remark: \").append(value);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Gra7ityIC3"},"content":" Set\u003cTag\u003e tags \u003d person.getTags();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Gra7ityIC3"},"content":" if (!tags.isEmpty()) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" builder.append(\"; Tags: \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Gra7ityIC3"},"content":" tags.forEach(builder::append);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":15,"-":49}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":" + \"[\" + PREFIX_PRIORITY + \"PRIORITY \u003d LOW] \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK] \"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" + PREFIX_PRIORITY + \"HIGH \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" + PREFIX_REMARK + \"Promises to pay back next week. \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":6,"-":84}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"nws321"},"content":" /* Skeleton for deleting multiple index at once","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"nws321"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"nws321"},"content":" + \": Deletes the people identified by the index numbers used in the displayed person list.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"nws321"},"content":" + \"Parameters: INDEXES (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"nws321"},"content":" + \"Example: \" + COMMAND_WORD + \" 1, 2\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"nws321"},"content":" private final Index[] targetIndexes;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"nws321"},"content":" public static final String MESSAGE_DELETE_PEOPLE_SUCCESS \u003d \"Deleted People: %s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"nws321"},"content":" public DeleteCommand(Index... targetIndexes) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"nws321"},"content":" this.targetIndexes \u003d targetIndexes;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"nws321"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"nws321"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"nws321"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"nws321"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"nws321"},"content":" String s \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"nws321"},"content":" for (int i \u003d 0; i \u003c targetIndexes.size(); i++) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"nws321"},"content":" if (targetIndexes[i].getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"nws321"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"nws321"},"content":" Person personsToDelete\u003d lastShownList.get(targetIndexes[i].getZeroBased());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"nws321"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"nws321"},"content":" s +\u003d Messages.format(personToDelete);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"nws321"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PEOPLE_SUCCESS, s));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"nws321"},"content":" CONTINUE FROM HERE","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"nws321"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"nws321"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"nws321"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"nws321"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"nws321"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"nws321"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"nws321"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"nws321"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"nws321"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"nws321"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"nws321"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"nws321"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"nws321"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"nws321"},"content":" .toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"nws321"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"nws321"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":69,"nws321":57}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"LeongWZ"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"LeongWZ"},"content":" + \"[\" + PREFIX_REMARK + \"REMARK]\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Gra7ityIC3"},"content":" Priority updatedPriority \u003d editPersonDescriptor.getPriority().orElse(personToEdit.getPriority());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Gra7ityIC3"},"content":" Remark updatedRemark \u003d editPersonDescriptor.getRemark().orElse(personToEdit.getRemark());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" updatedPriority, updatedRemark, updatedTags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Gra7ityIC3"},"content":" private Priority priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Gra7ityIC3"},"content":" private Remark remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Gra7ityIC3"},"content":" setPriority(toCopy.priority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Gra7ityIC3"},"content":" setRemark(toCopy.remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"LeongWZ"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, remark, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"Gra7ityIC3"},"content":" public void setPriority(Priority priority) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"Gra7ityIC3"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"Gra7ityIC3"},"content":" public Optional\u003cPriority\u003e getPriority() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"Gra7ityIC3"},"content":" return Optional.ofNullable(priority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"Gra7ityIC3"},"content":" public void setRemark(Remark remark) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"Gra7ityIC3"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"Gra7ityIC3"},"content":" public Optional\u003cRemark\u003e getRemark() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Gra7ityIC3"},"content":" return Optional.ofNullable(remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"Gra7ityIC3"},"content":" .add(\"priority\", priority)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"Gra7ityIC3"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"LeongWZ":3,"Gra7ityIC3":28,"-":240}},{"path":"src/main/java/seedu/address/logic/commands/ManualCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" * Format full instructions for every command for display.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"public class ManualCommand extends Command {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public static final String COMMAND_WORD \u003d \"manual\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Shows the user manual.\\n\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" + \"Example: \" + COMMAND_WORD;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED \u003d \"Manual command not implemented\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public static final String SHOWING_MANUAL_MESSAGE \u003d \"Opened user manual.\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public ManualCommand() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" throw new CommandException(MESSAGE_NOT_IMPLEMENTED);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"TerenceWongsExtravaganza":27}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Gra7ityIC3"},"content":" ArgumentTokenizer.tokenize(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" PREFIX_PRIORITY, PREFIX_REMARK, PREFIX_TAG);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Gra7ityIC3"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Gra7ityIC3"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_PRIORITY, PREFIX_REMARK);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Gra7ityIC3"},"content":" Priority priority \u003d ParserUtil.parsePriority(argMultimap.getValue(PREFIX_PRIORITY).orElse(\"LOW\"));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Gra7ityIC3"},"content":" Remark remark \u003d ParserUtil.parseRemark(argMultimap.getValue(PREFIX_REMARK).orElse(\"\"));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" Person person \u003d new Person(name, phone, email, address, priority, remark, tagList);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":12,"-":58}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"import seedu.address.logic.commands.ManualCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" case ManualCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"TerenceWongsExtravaganza"},"content":" return new ManualCommand();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"TerenceWongsExtravaganza"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":86,"TerenceWongsExtravaganza":4}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Prefix PREFIX_PRIORITY \u003d new Prefix(\"pri/\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Prefix PREFIX_REMARK \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":2,"-":15}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"nws321"},"content":" /*","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"nws321"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"nws321"},"content":" try {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"nws321"},"content":" int size \u003d args.split(\",\").size();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"nws321"},"content":" Index[] indexArray \u003d new Index[size];","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"nws321"},"content":" for (int i \u003d 0; i \u003c size; i++) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"nws321"},"content":" ParserUtil.parseIndex(indexArray[i])[i];","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"nws321"},"content":" return new DeleteCommand(indexArray);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"nws321"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"nws321"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"nws321"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"nws321"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"nws321"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"-":29,"nws321":15}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"LeongWZ"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"LeongWZ"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"LeongWZ"},"content":" PREFIX_REMARK);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"LeongWZ"},"content":" if (argMultimap.getValue(PREFIX_REMARK).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"LeongWZ"},"content":" editPersonDescriptor.setRemark(ParserUtil.parseRemark(argMultimap.getValue(PREFIX_REMARK).get()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"LeongWZ":6,"-":84}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Gra7ityIC3"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Gra7ityIC3"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Gra7ityIC3"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Gra7ityIC3"},"content":" *","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Gra7ityIC3"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Gra7ityIC3"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Gra7ityIC3"},"content":" requireNonNull(email);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Gra7ityIC3"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Gra7ityIC3"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Gra7ityIC3"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Gra7ityIC3"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Gra7ityIC3"},"content":" * Parses a {@code String priority} into a {@code Priority}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Gra7ityIC3"},"content":" * @throws ParseException if the given {@code priority} is invalid.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Gra7ityIC3"},"content":" public static Priority parsePriority(String priority) throws ParseException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Gra7ityIC3"},"content":" requireNonNull(priority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Gra7ityIC3"},"content":" String trimmedPriority \u003d priority.trim().toUpperCase();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Gra7ityIC3"},"content":" try {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" return Priority.valueOf(trimmedPriority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Gra7ityIC3"},"content":" throw new ParseException(Priority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Gra7ityIC3"},"content":" * Parses a {@code String remark} into a {@code Remark}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Gra7ityIC3"},"content":" public static Remark parseRemark(String remark) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Gra7ityIC3"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Gra7ityIC3"},"content":" return new Remark(remark.trim());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":32,"-":119}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"arjun2598"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"arjun2598"},"content":" // TO BE IMPLEMENTED","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"arjun2598"},"content":" // Updates the order in which the filtered contact list is sorted.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"arjun2598"},"content":" // void updateSortingOrder(String criterion); - Can use switch statements for criteria to sort by","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"arjun2598":4,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"arjun2598"},"content":"import java.util.Comparator;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"arjun2598"},"content":"import javafx.collections.transformation.SortedList;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"arjun2598"},"content":" private final SortedList\u003cPerson\u003e sortedPersons;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"arjun2598"},"content":" sortedPersons \u003d new SortedList\u003c\u003e(filteredPersons); // sortedPersons is updated along with filteredPersons","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"arjun2598"},"content":" sortedPersons.setComparator(Comparator.comparing(Person::getPriority)); // sort by descending priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"arjun2598"},"content":" return sortedPersons; // sortedPersons wraps filteredPersons and sorts it, so just return sorted version","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"arjun2598":6,"-":146}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":" private final Priority priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Gra7ityIC3"},"content":" private final Remark remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" public Person(Name name, Phone phone, Email email, Address address,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" Priority priority, Remark remark, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Gra7ityIC3"},"content":" public Priority getPriority() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Gra7ityIC3"},"content":" return priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Gra7ityIC3"},"content":" public Remark getRemark() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Gra7ityIC3"},"content":" return remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" \u0026\u0026 priority.equals(otherPerson.priority)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" \u0026\u0026 remark.equals(otherPerson.remark)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Gra7ityIC3"},"content":" .add(\"priority\", priority)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Gra7ityIC3"},"content":" .add(\"remark\", remark)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":18,"-":116}},{"path":"src/main/java/seedu/address/model/person/Priority.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gra7ityIC3"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Gra7ityIC3"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Gra7ityIC3"},"content":" * Represents a Person\u0027s priority in the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Gra7ityIC3"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Gra7ityIC3"},"content":"public enum Priority {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":" HIGH, MEDIUM, LOW;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Priority should be either HIGH, MEDIUM, or LOW\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":11}},{"path":"src/main/java/seedu/address/model/person/Remark.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Gra7ityIC3"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Gra7ityIC3"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Gra7ityIC3"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Gra7ityIC3"},"content":" * Represents a Person\u0027s remark in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Gra7ityIC3"},"content":" * Guarantees: immutable; is always valid","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"public class Remark {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Gra7ityIC3"},"content":" public final String value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Gra7ityIC3"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":" * Constructs a {@code Remark}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Gra7ityIC3"},"content":" *","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Gra7ityIC3"},"content":" * @param remark An optional remark.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Gra7ityIC3"},"content":" public Remark(String remark) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Gra7ityIC3"},"content":" requireNonNull(remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Gra7ityIC3"},"content":" value \u003d remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Gra7ityIC3"},"content":" public String toString() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Gra7ityIC3"},"content":" return value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Gra7ityIC3"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Gra7ityIC3"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Gra7ityIC3"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":" return true;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Gra7ityIC3"},"content":" if (!(other instanceof Remark)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Gra7ityIC3"},"content":" return false;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" Remark otherRemark \u003d (Remark) other;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" return value.equals(otherRemark.value);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Gra7ityIC3"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Gra7ityIC3"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Gra7ityIC3"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":47}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Remark EMPTY_REMARK \u003d new Remark(\"\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), Priority.HIGH, new Remark(\"Likes baseball\"),","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), Priority.MEDIUM, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), Priority.LOW, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), Priority.HIGH, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), Priority.MEDIUM, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Gra7ityIC3"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), Priority.LOW, EMPTY_REMARK,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":11,"-":54}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" private final String priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" private final String remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" public JsonAdaptedPerson(","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"name\") String name,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"priority\") String priority,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Gra7ityIC3"},"content":" @JsonProperty(\"remark\") String remark,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Gra7ityIC3"},"content":" this.priority \u003d priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Gra7ityIC3"},"content":" this.remark \u003d remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" priority \u003d source.getPriority().name();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":" remark \u003d source.getRemark().value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Gra7ityIC3"},"content":" .toList());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Gra7ityIC3"},"content":" if (priority \u003d\u003d null) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Gra7ityIC3"},"content":" throw new IllegalValueException(","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Gra7ityIC3"},"content":" String.format(MISSING_FIELD_MESSAGE_FORMAT, Priority.class.getSimpleName()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Gra7ityIC3"},"content":" final Priority modelPriority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Gra7ityIC3"},"content":" try {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Gra7ityIC3"},"content":" modelPriority \u003d Priority.valueOf(priority);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Gra7ityIC3"},"content":" } catch (IllegalArgumentException e) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Gra7ityIC3"},"content":" throw new IllegalValueException(Priority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Gra7ityIC3"},"content":" final Remark modelRemark \u003d new Remark(remark \u003d\u003d null ? \"\" : remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Gra7ityIC3"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelPriority, modelRemark, modelTags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":30,"-":104}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).toList());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":1,"-":58}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Gra7ityIC3"},"content":" * A UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" private Label id;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" @FXML","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Gra7ityIC3"},"content":" private Label priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Gra7ityIC3"},"content":" private Label remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Gra7ityIC3"},"content":" @FXML","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Gra7ityIC3"},"content":" priority.getStyleClass().add(switch (person.getPriority()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Gra7ityIC3"},"content":" case HIGH -\u003e \"priority-high\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Gra7ityIC3"},"content":" case MEDIUM -\u003e \"priority-medium\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Gra7ityIC3"},"content":" case LOW -\u003e \"priority-low\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Gra7ityIC3"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Gra7ityIC3"},"content":" priority.setText(person.getPriority().name());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" String value \u003d person.getRemark().value;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":" remark.setText(value);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Gra7ityIC3"},"content":" remark.setManaged(!value.isEmpty());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":18,"-":57}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Gra7ityIC3"},"content":"#priority {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-background-radius: 2em;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-border-radius: 2em;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-font-size: 14;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-padding: 0 10;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"Gra7ityIC3"},"content":".priority-high {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-background-color: #E53935;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-border-color: #ef9a9a;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Gra7ityIC3"},"content":".priority-medium {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-background-color: #FB8C00;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-border-color: #FFCC80;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Gra7ityIC3"},"content":".priority-low {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-background-color: #43A047;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Gra7ityIC3"},"content":" -fx-border-color: #A5D6A7;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Gra7ityIC3"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":23,"-":352}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cLabel fx:id\u003d\"priority\" text\u003d\"\\$priority\"\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cInsets left\u003d\"4\" /\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cLabel fx:id\u003d\"remark\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$remark\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":6,"-":36}},{"path":"src/main/resources/view/ResultDisplay.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextArea?\u003e","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003cStackPane fx:id\u003d\"placeHolder\" styleClass\u003d\"pane-with-border\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Gra7ityIC3"},"content":" \u003cTextArea fx:id\u003d\"resultDisplay\" editable\u003d\"false\" styleClass\u003d\"result-display\" wrapText\u003d\"true\"/\u003e","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":1,"-":8}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String VALID_PRIORITY_AMY \u003d \"HIGH\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String VALID_PRIORITY_BOB \u003d \"MEDIUM\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String VALID_REMARK_AMY \u003d \"Loves Taylor Swift.\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String VALID_REMARK_BOB \u003d \"Supports Manchester United.\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String PRIORITY_DESC_AMY \u003d \" \" + PREFIX_PRIORITY + VALID_PRIORITY_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String PRIORITY_DESC_BOB \u003d \" \" + PREFIX_PRIORITY + VALID_PRIORITY_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String REMARK_DESC_AMY \u003d \" \" + PREFIX_REMARK + VALID_REMARK_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String REMARK_DESC_BOB \u003d \" \" + PREFIX_REMARK + VALID_REMARK_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String INVALID_PRIORITY_DESC \u003d \" \" + PREFIX_PRIORITY + \"CRITICAL\"; // no such priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":11,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"LeongWZ"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"LeongWZ"},"content":" private void execute_specifiedRemarkField_shouldModifyRemark(String remarkString) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"LeongWZ"},"content":" Remark remark \u003d new Remark(remarkString);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"LeongWZ"},"content":" Person personToBeEdited \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LeongWZ"},"content":" Person personToBeExpected \u003d new Person(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getName(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getPhone(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getEmail(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getAddress(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"arjun2598"},"content":" personToBeEdited.getPriority(),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"LeongWZ"},"content":" remark,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"LeongWZ"},"content":" personToBeEdited.getTags());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"LeongWZ"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"LeongWZ"},"content":" .withRemark(remark.value)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"LeongWZ"},"content":" .build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"LeongWZ"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"LeongWZ"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"LeongWZ"},"content":" expectedModel.setPerson(personToBeEdited, personToBeExpected);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"LeongWZ"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"LeongWZ"},"content":" Messages.format(personToBeExpected));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"LeongWZ"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"LeongWZ"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"LeongWZ"},"content":" public void execute_specifiedRemarkField_shouldModifyRemark() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"LeongWZ"},"content":" execute_specifiedRemarkField_shouldModifyRemark(\"This is a remark!\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"LeongWZ"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"LeongWZ"},"content":" public void execute_specifiedEmptyRemarkField_shouldModifyRemark() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"LeongWZ"},"content":" execute_specifiedRemarkField_shouldModifyRemark(\"\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"arjun2598"},"content":" Person personInList \u003d model.getFilteredPersonList().get(INDEX_SECOND_PERSON.getZeroBased()); // second in list","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"arjun2598"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"arjun2598"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON); // filters list to now only contain first person","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"arjun2598":4,"LeongWZ":39,"-":181}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", priority\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":" + editPersonDescriptor.getPriority().orElse(null) + \", remark\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Gra7ityIC3"},"content":" + editPersonDescriptor.getRemark().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":3,"-":70}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PRIORITY_DESC;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PRIORITY_DESC_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PRIORITY_DESC_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PRIORITY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Gra7ityIC3"},"content":" private final AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Gra7ityIC3"},"content":" + ADDRESS_DESC_BOB + PRIORITY_DESC_BOB + REMARK_DESC_BOB + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Gra7ityIC3"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Gra7ityIC3"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Gra7ityIC3"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Gra7ityIC3"},"content":" + PRIORITY_DESC_BOB + REMARK_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Gra7ityIC3"},"content":" + ADDRESS_DESC_BOB + PRIORITY_DESC_BOB + REMARK_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Gra7ityIC3"},"content":" // multiple priorities","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, PRIORITY_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PRIORITY));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Gra7ityIC3"},"content":" // multiple remarks","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, REMARK_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_REMARK));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Gra7ityIC3"},"content":" validExpectedPersonString + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Gra7ityIC3"},"content":" + ADDRESS_DESC_AMY + PRIORITY_DESC_AMY + REMARK_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Gra7ityIC3"},"content":" PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_PRIORITY, PREFIX_REMARK));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, INVALID_PRIORITY_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PRIORITY));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PRIORITY_DESC,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Gra7ityIC3"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PRIORITY));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Gra7ityIC3"},"content":" // zero tags and no remark","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"Gra7ityIC3"},"content":" // invalid priority","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"Gra7ityIC3"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"Gra7ityIC3"},"content":" + INVALID_PRIORITY_DESC + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Priority.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":48,"-":176}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"LeongWZ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.REMARK_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"LeongWZ"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"LeongWZ"},"content":" // remark","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"LeongWZ"},"content":" userInput \u003d targetIndex.getOneBased() + REMARK_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"LeongWZ"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withRemark(VALID_REMARK_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"LeongWZ"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"LeongWZ"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"LeongWZ":8,"-":208}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Gra7ityIC3"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getName() + \", phone\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getPhone() + \", email\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getEmail() + \", address\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getAddress() + \", priority\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getPriority() + \", remark\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getRemark() + \", tags\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Gra7ityIC3"},"content":" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":8,"-":97}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":" private static final String INVALID_PRIORITY \u003d \"CRITICAL\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" private static final String VALID_PRIORITY \u003d BENSON.getPriority().toString();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" private static final String VALID_REMARK \u003d BENSON.getRemark().toString();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Gra7ityIC3"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Gra7ityIC3"},"content":" public void toModelType_invalidPriority_throwsIllegalValueException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Gra7ityIC3"},"content":" INVALID_PRIORITY, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Gra7ityIC3"},"content":" String expectedMessage \u003d Priority.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Gra7ityIC3"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Gra7ityIC3"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Gra7ityIC3"},"content":" public void toModelType_nullPriority_throwsIllegalValueException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Gra7ityIC3"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Gra7ityIC3"},"content":" null, VALID_REMARK, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Gra7ityIC3"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Priority.class.getSimpleName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Gra7ityIC3"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Gra7ityIC3"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Gra7ityIC3"},"content":" VALID_PRIORITY, VALID_REMARK, invalidTags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":44,"-":101}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"LeongWZ"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Gra7ityIC3"},"content":" descriptor.setPriority(person.getPriority());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Gra7ityIC3"},"content":" descriptor.setRemark(person.getRemark());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"LeongWZ"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"LeongWZ"},"content":" * Sets the {@code Remark} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"LeongWZ"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"LeongWZ"},"content":" public EditPersonDescriptorBuilder withRemark(String remark) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"LeongWZ"},"content":" descriptor.setRemark(new Remark(remark));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"LeongWZ"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"LeongWZ"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"LeongWZ"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"LeongWZ":9,"Gra7ityIC3":2,"-":87}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"import seedu.address.model.person.Remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String DEFAULT_PRIORITY \u003d \"LOW\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Gra7ityIC3"},"content":" public static final String DEFAULT_REMARK \u003d \"\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" private Priority priority;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" private Remark remark;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Gra7ityIC3"},"content":" priority \u003d Priority.valueOf(DEFAULT_PRIORITY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Gra7ityIC3"},"content":" remark \u003d new Remark(DEFAULT_REMARK);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" priority \u003d personToCopy.getPriority();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Gra7ityIC3"},"content":" remark \u003d personToCopy.getRemark();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Gra7ityIC3"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Gra7ityIC3"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Gra7ityIC3"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Gra7ityIC3"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Gra7ityIC3"},"content":" * Sets the {@code Priority} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withPriority(String priority) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Gra7ityIC3"},"content":" this.priority \u003d Priority.valueOf(priority);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Gra7ityIC3"},"content":" * Sets the {@code Remark} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withRemark(String remark) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Gra7ityIC3"},"content":" this.remark \u003d new Remark(remark);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Gra7ityIC3"},"content":" return this;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Gra7ityIC3"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Gra7ityIC3"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Gra7ityIC3"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Gra7ityIC3"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Gra7ityIC3"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Gra7ityIC3"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Gra7ityIC3"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Gra7ityIC3"},"content":" return new Person(name, phone, email, address, priority, remark, tags);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":31,"-":91}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_REMARK;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Gra7ityIC3"},"content":" sb.append(PREFIX_REMARK + person.getRemark().value + \" \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Gra7ityIC3"},"content":" person.getTags().forEach(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":3,"-":61}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PRIORITY_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Gra7ityIC3"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_REMARK_BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\").withPhone(\"94351253\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Gra7ityIC3"},"content":" .withEmail(\"alice@example.com\").withAddress(\"123, Jurong West Ave 6, #08-111\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Gra7ityIC3"},"content":" .withPriority(\"MEDIUM\").withRemark(\"She likes pygmy hippos.\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Gra7ityIC3"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\").withPhone(\"98765432\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Gra7ityIC3"},"content":" .withEmail(\"johnd@example.com\").withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Gra7ityIC3"},"content":" .withPriority(\"HIGH\").withRemark(\"Promises to pay back next week.\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\").build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").build();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Gra7ityIC3"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withPriority(VALID_PRIORITY_BOB)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Gra7ityIC3"},"content":" .withRemark(VALID_REMARK_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"Gra7ityIC3":10,"-":68}}] diff --git a/AY2425S1-CS2103T-F14b-1_tp_master/commits.json b/AY2425S1-CS2103T-F14b-1_tp_master/commits.json index 6431836c..b4bb2fee 100644 --- a/AY2425S1-CS2103T-F14b-1_tp_master/commits.json +++ b/AY2425S1-CS2103T-F14b-1_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"arjun2598":[{"date":"2024-10-02","commitResults":[{"hash":"e5a6e2878be13066dd54e0b42db1187d2f4ab3a3","isMergeCommit":false,"messageTitle":"Add Arjun information to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"e0a7ec3b12f7ab09398fbb39d68a7140ee50652b","isMergeCommit":false,"messageTitle":"Change position of my information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"0d6ece821025ed874a8551f95174770a7f3fe44d","isMergeCommit":true,"messageTitle":"Merge pull request #19 from TerenceWongsExtravaganza/Add_Terence_AboutUs","messageBody":"Update Terence details in AboutUs","fileTypesAndContributionMap":{}},{"hash":"b71c214b83846dde01108b98ea53805bf3be0c45","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-arjun2598-AboutUs","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"d8ed6aa596131445014e642e1fbc31b3fa960a02","isMergeCommit":true,"messageTitle":"Merge pull request #29 from TerenceWongsExtravaganza/Branch-Update-Site_Settings","messageBody":"Update site-wide setting","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"4e9136c8f313c5f3e5eca20b6e44b0b3c0888e5e","isMergeCommit":false,"messageTitle":"Edit user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":8}}}]},{"date":"2024-10-09","commitResults":[{"hash":"1b79520d1f74114c9710783e53a456f43287977d","isMergeCommit":true,"messageTitle":"Merge pull request #45 from TerenceWongsExtravaganza/branch_add_manual_command","messageBody":"Add manual command to parser","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"072fd3b21573c7676270ff53bcc531286a3b5d43","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into auto-sort-list","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bf898e9b320b0853e5331f85037c5440c32eaceb","isMergeCommit":false,"messageTitle":"Auto sort contacts by priority","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":1},"test-code":{"insertions":6,"deletions":0}}}]}],"LeongWZ":[{"date":"2024-10-01","commitResults":[{"hash":"cb4c005275123a99adf8dc17fa218c36f68ebaea","isMergeCommit":false,"messageTitle":"Add leongwz to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-10-02","commitResults":[{"hash":"17fc32feabc65646c1ea01a24cdad9e5390ad767","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2425S1-CS2103T-F14b-1/tp into branch-UpdateAboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d43f848f14d4ae60c202244a62b176f3b029d332","isMergeCommit":true,"messageTitle":"Merge pull request #21 from nws321/branch-add-vincent-details","messageBody":"Update Vincent\u0027s Details In AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"130331c5c4dc2ea79956cac9de163825b556ec78","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2425S1-CS2103T-F14b-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"adfdaf55235b785db413f7f46f04c100885ff4ba","isMergeCommit":false,"messageTitle":"Add User Profile and Value Proposition in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"f42a79de91141365c498fedd81a91507755f0793","isMergeCommit":false,"messageTitle":"Add use cases to Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":121,"deletions":14}}},{"hash":"74beb3fd94029023eec7d162c45849e4bff31d2b","isMergeCommit":true,"messageTitle":"Merge pull request #36 from nws321/branch-add-nfr-and-glossary","messageBody":"Update non-functional requirements and glossary","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"912ae7705eb636ff5dda446038541910ecc262e8","isMergeCommit":true,"messageTitle":"Merge pull request #40 from Gra7ityIC3/add-remark-field","messageBody":"Add remark field to Person class","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"45ca896b55b1f734fdfaaf7a3f03df291b8eccb9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2425S1-CS2103T-F14b-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f0ce77283894054a8a4bad352344a895961d6dbf","isMergeCommit":false,"messageTitle":"Support editing of remark field using EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":2},"test-code":{"insertions":48,"deletions":0}}},{"hash":"4965dd5fa37c5fa1b5c4b4eee1e5161c409886c0","isMergeCommit":false,"messageTitle":"Include remark field in EditCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":21}}},{"hash":"fe1bfac457285b885c5989545c5c2cf62603203a","isMergeCommit":false,"messageTitle":"Remove wildcard import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"d72d945b572df8a5fb636fbf7672d409adbd09f1","isMergeCommit":true,"messageTitle":"Merge pull request #43 from Gra7ityIC3/add-priority-field","messageBody":"Add priority field to Person class","fileTypesAndContributionMap":{}}]}],"Gra7ityIC3":[{"date":"2024-10-02","commitResults":[{"hash":"9df661db0ec6e1b05bf421ad243ca14f4dc25364","isMergeCommit":false,"messageTitle":"Add Clement\u0027s details to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":7}}},{"hash":"48a02d82284f7281c841055cdd99f6bfa0da30bb","isMergeCommit":true,"messageTitle":"Merge pull request #10 from LeongWZ/branch-UpdateAboutUs","messageBody":"Add leongwz to AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"d384ccb231374ca576cbd230165db90b91a5bdf5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-clement-aboutus","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}},{"hash":"7184ce21384c903245746395395eab2d13d88545","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":11}}}]},{"date":"2024-10-05","commitResults":[{"hash":"3504c6b0a5789e7f4509bcab9354fcf150312700","isMergeCommit":true,"messageTitle":"Merge pull request #33 from LeongWZ/branch-AddUserProfileAndValueProp","messageBody":"Update user profile and value proposition in DG","fileTypesAndContributionMap":{}},{"hash":"efe3111d748b5c0372ce345a71d8bbd8b4ba522d","isMergeCommit":true,"messageTitle":"Merge pull request #37 from LeongWZ/branch-AddUseCases","messageBody":"Add use cases to developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"3f888618dd676922899667e714f891c0aa54904e","isMergeCommit":false,"messageTitle":"Add remark field to Person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":130,"deletions":18},"test-code":{"insertions":38,"deletions":15}}}]},{"date":"2024-10-07","commitResults":[{"hash":"adc1febcb8863f0315d6f5861aed567063afd475","isMergeCommit":false,"messageTitle":"Update tests for AddCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":24,"deletions":9}}}]},{"date":"2024-10-08","commitResults":[{"hash":"501d076167d8b8fb2faf78672b06e1d6b9c2ace3","isMergeCommit":false,"messageTitle":"Add priority field to Person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":121,"deletions":35},"test-code":{"insertions":83,"deletions":32}}}]},{"date":"2024-10-10","commitResults":[{"hash":"80bfb6a02bf56c452653ebaf546da5414da2f38d","isMergeCommit":false,"messageTitle":"Add CSS styles for priority labels","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":2}}},{"hash":"6ef2bdc8abd2a83b94f29d215b10c1fe70b93603","isMergeCommit":false,"messageTitle":"Update tests for AddCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":56,"deletions":31}}},{"hash":"e52223e72b849f1344d832ea092b73a6a01d340d","isMergeCommit":true,"messageTitle":"Merge pull request #47 from LeongWZ/branch-EditRemark","messageBody":"Support editing of remark field using EditCommand","fileTypesAndContributionMap":{}},{"hash":"268e380e18a39d71f024a73511bc80f922173d1d","isMergeCommit":true,"messageTitle":"Merge pull request #50 from nws321/branch-skeleton-code-delete-multiple","messageBody":"Create skeleton code for multiple delete function","fileTypesAndContributionMap":{}}]}],"TerenceWongsExtravaganza":[{"date":"2024-10-02","commitResults":[{"hash":"47fe1cea6f50b1a031e5e507eccf75da87e3d419","isMergeCommit":false,"messageTitle":"Update Terence details in AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-03","commitResults":[{"hash":"40356087009c7baba7b3d1e1b501b47ab5dacb14","isMergeCommit":true,"messageTitle":"Merge pull request #23 from Gra7ityIC3/add-clement-aboutus","messageBody":"Add Clement\u0027s details to AboutUs","fileTypesAndContributionMap":{}},{"hash":"a7d32d71fec2fbd6509bcd583b916f2ef74bc616","isMergeCommit":true,"messageTitle":"Merge pull request #27 from Gra7ityIC3/update-readme","messageBody":"Update README page","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"ef802fc63270fdcfb21dd351dba5419a4b19df10","isMergeCommit":false,"messageTitle":"Update site-wide setting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-08","commitResults":[{"hash":"b6022542df2b533adc58ebfcbc5d2990f12cae6c","isMergeCommit":false,"messageTitle":"Add manual command to parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":0}}},{"hash":"3cb47b6d818f8355d3624c62f1f95d2ca400f46e","isMergeCommit":false,"messageTitle":"Fix styling issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}}]}],"nws321":[{"date":"2024-10-02","commitResults":[{"hash":"759e25f96fc5e6b7973d0d6fb5973136a73a5f8d","isMergeCommit":false,"messageTitle":"Update Vincent\u0027s Details In AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"91644cdf3de02cd84ff60eb21a1009a170509c17","isMergeCommit":true,"messageTitle":"Merge pull request #15 from arjun2598/add-arjun2598-AboutUs","messageBody":"Add arjun2598 to AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"c1537e17b71329cd29e8275db97fcfe22a882450","isMergeCommit":true,"messageTitle":"Merge pull request #31 from arjun2598/add-user-stories","messageBody":"Update user stories in DG","fileTypesAndContributionMap":{}},{"hash":"f569cca0a15982b5e6394c7cb7f5da620fbef673","isMergeCommit":false,"messageTitle":"Update non-functional requirements and glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":2}}}]},{"date":"2024-10-10","commitResults":[{"hash":"56f5fa684f6e58bfec9dbf1fd7d63f4126a21548","isMergeCommit":false,"messageTitle":"Create skeleton code for multiple delete function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":0}}},{"hash":"440cee1eb0b66ae58e9501d4776fc7492fbcd63b","isMergeCommit":true,"messageTitle":"Merge pull request #49 from arjun2598/auto-sort-list","messageBody":"Auto sort list","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"arjun2598":{"docs":22,"functional-code":24,"test-code":6},"LeongWZ":{"docs":122,"functional-code":9,"test-code":56},"Gra7ityIC3":{"docs":31,"functional-code":261,"test-code":160},"TerenceWongsExtravaganza":{"docs":5,"functional-code":31,"test-code":0},"nws321":{"docs":7,"functional-code":72,"test-code":0}},"authorContributionVariance":{"arjun2598":86.84808,"LeongWZ":1358.2357,"Gra7ityIC3":5234.2354,"TerenceWongsExtravaganza":62.6576,"nws321":235.80043},"authorDisplayNameMap":{"arjun2598":"CS2103T-F14b-1 ARJU..ANAN","LeongWZ":"CS2103T-F14b-1 LEON.. ZHI","Gra7ityIC3":"CS2103T-F14b-1 OH Y..MENT","TerenceWongsExtravaganza":"CS2103T-F14b-1 TERE.. WEN","nws321":"CS2103T-F14b-1 NG W..CENT"}} +{"authorDailyContributionsMap":{"arjun2598":[{"date":"2024-10-02","commitResults":[{"hash":"e5a6e2878be13066dd54e0b42db1187d2f4ab3a3","isMergeCommit":false,"messageTitle":"Add Arjun information to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"e0a7ec3b12f7ab09398fbb39d68a7140ee50652b","isMergeCommit":false,"messageTitle":"Change position of my information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"0d6ece821025ed874a8551f95174770a7f3fe44d","isMergeCommit":true,"messageTitle":"Merge pull request #19 from TerenceWongsExtravaganza/Add_Terence_AboutUs","messageBody":"Update Terence details in AboutUs","fileTypesAndContributionMap":{}},{"hash":"b71c214b83846dde01108b98ea53805bf3be0c45","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-arjun2598-AboutUs","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"d8ed6aa596131445014e642e1fbc31b3fa960a02","isMergeCommit":true,"messageTitle":"Merge pull request #29 from TerenceWongsExtravaganza/Branch-Update-Site_Settings","messageBody":"Update site-wide setting","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"4e9136c8f313c5f3e5eca20b6e44b0b3c0888e5e","isMergeCommit":false,"messageTitle":"Edit user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":18,"deletions":8}}}]},{"date":"2024-10-09","commitResults":[{"hash":"1b79520d1f74114c9710783e53a456f43287977d","isMergeCommit":true,"messageTitle":"Merge pull request #45 from TerenceWongsExtravaganza/branch_add_manual_command","messageBody":"Add manual command to parser","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"072fd3b21573c7676270ff53bcc531286a3b5d43","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into auto-sort-list","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bf898e9b320b0853e5331f85037c5440c32eaceb","isMergeCommit":false,"messageTitle":"Auto sort contacts by priority","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":1},"test-code":{"insertions":6,"deletions":0}}}]},{"date":"2024-10-13","commitResults":[{"hash":"655221d2c27b1b56b7cbfe6812e4493a299ad171","isMergeCommit":false,"messageTitle":"Fix bug with sorting such that indices match for other commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":18},"test-code":{"insertions":3,"deletions":8}}}]}],"LeongWZ":[{"date":"2024-10-01","commitResults":[{"hash":"cb4c005275123a99adf8dc17fa218c36f68ebaea","isMergeCommit":false,"messageTitle":"Add leongwz to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-10-02","commitResults":[{"hash":"17fc32feabc65646c1ea01a24cdad9e5390ad767","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2425S1-CS2103T-F14b-1/tp into branch-UpdateAboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d43f848f14d4ae60c202244a62b176f3b029d332","isMergeCommit":true,"messageTitle":"Merge pull request #21 from nws321/branch-add-vincent-details","messageBody":"Update Vincent\u0027s Details In AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"130331c5c4dc2ea79956cac9de163825b556ec78","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2425S1-CS2103T-F14b-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"adfdaf55235b785db413f7f46f04c100885ff4ba","isMergeCommit":false,"messageTitle":"Add User Profile and Value Proposition in DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"f42a79de91141365c498fedd81a91507755f0793","isMergeCommit":false,"messageTitle":"Add use cases to Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":121,"deletions":14}}},{"hash":"74beb3fd94029023eec7d162c45849e4bff31d2b","isMergeCommit":true,"messageTitle":"Merge pull request #36 from nws321/branch-add-nfr-and-glossary","messageBody":"Update non-functional requirements and glossary","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"912ae7705eb636ff5dda446038541910ecc262e8","isMergeCommit":true,"messageTitle":"Merge pull request #40 from Gra7ityIC3/add-remark-field","messageBody":"Add remark field to Person class","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"45ca896b55b1f734fdfaaf7a3f03df291b8eccb9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:AY2425S1-CS2103T-F14b-1/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f0ce77283894054a8a4bad352344a895961d6dbf","isMergeCommit":false,"messageTitle":"Support editing of remark field using EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":2},"test-code":{"insertions":48,"deletions":0}}},{"hash":"4965dd5fa37c5fa1b5c4b4eee1e5161c409886c0","isMergeCommit":false,"messageTitle":"Include remark field in EditCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":21}}},{"hash":"fe1bfac457285b885c5989545c5c2cf62603203a","isMergeCommit":false,"messageTitle":"Remove wildcard import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"d72d945b572df8a5fb636fbf7672d409adbd09f1","isMergeCommit":true,"messageTitle":"Merge pull request #43 from Gra7ityIC3/add-priority-field","messageBody":"Add priority field to Person class","fileTypesAndContributionMap":{}}]}],"Gra7ityIC3":[{"date":"2024-10-02","commitResults":[{"hash":"9df661db0ec6e1b05bf421ad243ca14f4dc25364","isMergeCommit":false,"messageTitle":"Add Clement\u0027s details to AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":7}}},{"hash":"48a02d82284f7281c841055cdd99f6bfa0da30bb","isMergeCommit":true,"messageTitle":"Merge pull request #10 from LeongWZ/branch-UpdateAboutUs","messageBody":"Add leongwz to AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"d384ccb231374ca576cbd230165db90b91a5bdf5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-clement-aboutus","messageBody":"# Conflicts:\n#\tdocs/AboutUs.md\n","fileTypesAndContributionMap":{}},{"hash":"7184ce21384c903245746395395eab2d13d88545","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":19,"deletions":11}}}]},{"date":"2024-10-05","commitResults":[{"hash":"3504c6b0a5789e7f4509bcab9354fcf150312700","isMergeCommit":true,"messageTitle":"Merge pull request #33 from LeongWZ/branch-AddUserProfileAndValueProp","messageBody":"Update user profile and value proposition in DG","fileTypesAndContributionMap":{}},{"hash":"efe3111d748b5c0372ce345a71d8bbd8b4ba522d","isMergeCommit":true,"messageTitle":"Merge pull request #37 from LeongWZ/branch-AddUseCases","messageBody":"Add use cases to developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"3f888618dd676922899667e714f891c0aa54904e","isMergeCommit":false,"messageTitle":"Add remark field to Person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":130,"deletions":18},"test-code":{"insertions":38,"deletions":15}}}]},{"date":"2024-10-07","commitResults":[{"hash":"adc1febcb8863f0315d6f5861aed567063afd475","isMergeCommit":false,"messageTitle":"Update tests for AddCommandParser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":24,"deletions":9}}}]},{"date":"2024-10-08","commitResults":[{"hash":"501d076167d8b8fb2faf78672b06e1d6b9c2ace3","isMergeCommit":false,"messageTitle":"Add priority field to Person class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":121,"deletions":35},"test-code":{"insertions":83,"deletions":32}}}]},{"date":"2024-10-10","commitResults":[{"hash":"80bfb6a02bf56c452653ebaf546da5414da2f38d","isMergeCommit":false,"messageTitle":"Add CSS styles for priority labels","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":2}}},{"hash":"6ef2bdc8abd2a83b94f29d215b10c1fe70b93603","isMergeCommit":false,"messageTitle":"Update tests for AddCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":56,"deletions":31}}},{"hash":"e52223e72b849f1344d832ea092b73a6a01d340d","isMergeCommit":true,"messageTitle":"Merge pull request #47 from LeongWZ/branch-EditRemark","messageBody":"Support editing of remark field using EditCommand","fileTypesAndContributionMap":{}},{"hash":"268e380e18a39d71f024a73511bc80f922173d1d","isMergeCommit":true,"messageTitle":"Merge pull request #50 from nws321/branch-skeleton-code-delete-multiple","messageBody":"Create skeleton code for multiple delete function","fileTypesAndContributionMap":{}}]},{"date":"2024-10-13","commitResults":[{"hash":"e2e8124d099181afd9f60fbda9972b9a1da9a40d","isMergeCommit":true,"messageTitle":"Merge pull request #59 from arjun2598/fix-sort-bug","messageBody":"Fix bug with sorting","fileTypesAndContributionMap":{}}]}],"TerenceWongsExtravaganza":[{"date":"2024-10-02","commitResults":[{"hash":"47fe1cea6f50b1a031e5e507eccf75da87e3d419","isMergeCommit":false,"messageTitle":"Update Terence details in AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-03","commitResults":[{"hash":"40356087009c7baba7b3d1e1b501b47ab5dacb14","isMergeCommit":true,"messageTitle":"Merge pull request #23 from Gra7ityIC3/add-clement-aboutus","messageBody":"Add Clement\u0027s details to AboutUs","fileTypesAndContributionMap":{}},{"hash":"a7d32d71fec2fbd6509bcd583b916f2ef74bc616","isMergeCommit":true,"messageTitle":"Merge pull request #27 from Gra7ityIC3/update-readme","messageBody":"Update README page","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"ef802fc63270fdcfb21dd351dba5419a4b19df10","isMergeCommit":false,"messageTitle":"Update site-wide setting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}}]},{"date":"2024-10-08","commitResults":[{"hash":"b6022542df2b533adc58ebfcbc5d2990f12cae6c","isMergeCommit":false,"messageTitle":"Add manual command to parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":0}}},{"hash":"3cb47b6d818f8355d3624c62f1f95d2ca400f46e","isMergeCommit":false,"messageTitle":"Fix styling issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}}]}],"nws321":[{"date":"2024-10-02","commitResults":[{"hash":"759e25f96fc5e6b7973d0d6fb5973136a73a5f8d","isMergeCommit":false,"messageTitle":"Update Vincent\u0027s Details In AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"91644cdf3de02cd84ff60eb21a1009a170509c17","isMergeCommit":true,"messageTitle":"Merge pull request #15 from arjun2598/add-arjun2598-AboutUs","messageBody":"Add arjun2598 to AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"c1537e17b71329cd29e8275db97fcfe22a882450","isMergeCommit":true,"messageTitle":"Merge pull request #31 from arjun2598/add-user-stories","messageBody":"Update user stories in DG","fileTypesAndContributionMap":{}},{"hash":"f569cca0a15982b5e6394c7cb7f5da620fbef673","isMergeCommit":false,"messageTitle":"Update non-functional requirements and glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":2}}}]},{"date":"2024-10-10","commitResults":[{"hash":"56f5fa684f6e58bfec9dbf1fd7d63f4126a21548","isMergeCommit":false,"messageTitle":"Create skeleton code for multiple delete function","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":72,"deletions":0}}},{"hash":"440cee1eb0b66ae58e9501d4776fc7492fbcd63b","isMergeCommit":true,"messageTitle":"Merge pull request #49 from arjun2598/auto-sort-list","messageBody":"Auto sort list","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"arjun2598":{"docs":22,"functional-code":10,"test-code":4},"LeongWZ":{"docs":122,"functional-code":9,"test-code":56},"Gra7ityIC3":{"docs":31,"functional-code":261,"test-code":160},"TerenceWongsExtravaganza":{"docs":5,"functional-code":31,"test-code":0},"nws321":{"docs":7,"functional-code":72,"test-code":0}},"authorContributionVariance":{"arjun2598":109.65104,"LeongWZ":1205.2223,"Gra7ityIC3":4692.2896,"TerenceWongsExtravaganza":55.373272,"nws321":208.28993},"authorDisplayNameMap":{"arjun2598":"CS2103T-F14b-1 ARJU..ANAN","LeongWZ":"CS2103T-F14b-1 LEON.. ZHI","Gra7ityIC3":"CS2103T-F14b-1 OH Y..MENT","TerenceWongsExtravaganza":"CS2103T-F14b-1 TERE.. WEN","nws321":"CS2103T-F14b-1 NG W..CENT"}} diff --git a/AY2425S1-CS2103T-F14b-3_tp_master/authorship.json b/AY2425S1-CS2103T-F14b-3_tp_master/authorship.json index 51fc930c..a2b01e09 100644 --- a/AY2425S1-CS2103T-F14b-3_tp_master/authorship.json +++ b/AY2425S1-CS2103T-F14b-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-F14b-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F14b-3/tp/actions)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-F14b-3/tp/graph/badge.svg?token\u003dSY2FHAQJ4U)](https://codecov.io/gh/AY2425S1-CS2103T-F14b-3/tp)","lastModifiedDate":"2024-09-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"# ContactMate","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"This is CLI friendly contact book called **ContactMate**. It is a desktop app for managing contacts, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"ContactMate is for AAC Volunteers to manage their clients\u0027 contacts and keep track of their interactions with them.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"## Features","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"- Add a contact for a client","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"- Read through a client\u0027s call history along with notes taken during the call","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"- Delete a contact","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"- List clients to call based on a priority system","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"- Mark a client as called","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":"## Acknowledgements","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":17,"-":3}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg).","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"linette-g"},"content":"You can reach us at the email `e0969203[at]u.nus.edu`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"### Zen Koh","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Zenkoh1"},"content":"\u003cimg src\u003d\"images/zenkoh1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":"[[github](https://github.com/Zenkoh1)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Zenkoh1"},"content":"[[portfolio](team/zenkoh1.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":"* Role: Team Lead","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":"* Responsibilities: Logic","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":"### Linette Goh","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":"\u003cimg src\u003d\"images/linette-g.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":"[[github](http://github.com/linette-g)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":"[[portfolio](team/linette.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":"* Role: Developer","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":"### Brendan Ng","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":"\u003cimg src\u003d\"images/brendanng7.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":"[[github](http://github.com/brendanng7)] [[portfolio](team/brendanng7.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":"* Responsibilities: DevOps","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":"### Ziying","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"zyng233"},"content":"\u003cimg src\u003d\"images/zyng233.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zyng233"},"content":"[[github](http://github.com/zyng233)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zyng233"},"content":"[[portfolio](team/ziying.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":"### Gabriel Chang","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":"\u003cimg src\u003d\"images/gabrielcwt.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":"[[github](http://github.com/gabrielcwt)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":"[[portfolio](team/gabrielcwt.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":"* Responsibilities: Testing","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"linette-g":6,"Zenkoh1":6,"GabrielCWT":5,"zyng233":4,"brendanng7":4,"-":34}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"GabrielCWT"},"content":"* employee at Active Ageing Centre (AAC)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"GabrielCWT"},"content":"**Value proposition**: Easy way to manage regular checkups. Fast, convenient and reliable way to organise contacts and ensure that everyone is checked up on a regular basis. It solves the problem of having to manually manage all the elderly just to keep up with the government’s (AIC) requirements.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"GabrielCWT"},"content":"Priorities: High (must have) - `****`, Medium (nice to have) - `***`, Low (unlikely to have) - `**`, Super Low (won\u0027t have) - `*`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"GabrielCWT"},"content":" | `****` | User | Mark elderly as called | I can easily keep track of who has been contacted |","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"GabrielCWT"},"content":" | `****` | New user | list elderly contacts by priority (prioritised by last called date) | I know whom to contact first | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Remove elderly from the call list | Any elderly who has passed away or left the program will no longer be on the list | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"GabrielCWT"},"content":" | `****` | User | Record details of the elderly (NRIC etc.) | I know who I\u0027m calling | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Add new elderly who have joined the Befriending Program | I can keep track of these new elderly and call them regularly | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Expert User | Take notes regarding the call | I can keep track of things which should be followed up on | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Update elderly contact information | I can keep the elderly information up to date | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Search elderly by name | I can find this specific person if they were to call me and I can log it as a call | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Expert User | Generate a monthly report to AIC / excel sheet | show the progress and outcome of the Befriending Program | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Check if the same elderly has been added multiple times | I don\u0027t call the same person multiple times | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Frequent User | Make changes to the style of my address book | I can be happy when I use the address book :) | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Frequent user | Mark contacted elderly quickly using shortcuts | I can work efficiently to contact the entire list | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Detail-orientated user | Add tags to each elderly | I can keep track of details that are important when taking the call. | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Expert User | Add custom fields | I can add details of elderly which are not currently in the system | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Expert User | Visualise how many and which elderly to be called in a calendar | I can plan accordingly if any elderly needs to switch dates | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Expert User | Filter through certain details added for the elderly | I can keep track of how the elderly are doing easily | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Frequent User | receive notifications for the contacts that are due in the next hour | I can prioritize and complete the calls on time | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"GabrielCWT"},"content":" | `**` | New User | Receive feedback on the commands I have given if they are incorrect | I can easily correct the errors in the commands given | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | Use my up and down arrow keys to go back and forth between commands | I don\u0027t have to retype the same commands | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"GabrielCWT"},"content":" | `***` | New user | Receive a list of commands that the address book uses | I can familiarise myself with the commands and shortcuts | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | I can undo my actions | I can correct my mistakes | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Expert User | Quickly update the status of multiple elderly contacts | I can efficiently manage my tasks | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"GabrielCWT"},"content":" | `***` | New user | Try out the app with sample data | I can familiarise myself with it without worrying about the data I am playing around with | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Onboarded user | Purge all sample data | The app is ready to be used | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | I can view a history of calls made to an elderly contact | I can track past interactions | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | Change the frequency of calls needed to be made for each elderly | I can track when I need to make calls | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Expert User | Archive elderly contacts who are temporarily not part of the program | Keep my contact list organised | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | Export/Import my data across computers | If I would like to work using separate computers, e.g. a laptop and desktop, I can keep them updated | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Expert User | Set multiple contacts as emergency contacts | I can call their next of kin in the event the elderly do not pick up or needs help | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | Export a specific elderly\u0027s details and history (All information) | So I can share it with another employee | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"GabrielCWT"},"content":" | `*` | Expert user | Be notified by the app when too many elderly calls are scheduled on one day | I will not overwork myself or spend too little time calling each elderly | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"GabrielCWT"},"content":" | `*` | Expert User | I can see a dashboard of my weekly or monthly call stats | I can track my productivity and ensure that I hit my KPI | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"GabrielCWT"},"content":" | `*` | Expert User | Set up automated messages for elderly contacts that are not reachable | I can have an alternative communication method | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"GabrielCWT"},"content":" | `*` | Expert User | Use AI to calculate the priority list for elderly based on their information | The correct eldelry are being prioritised | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC01 \\- Mark elderly as called** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"GabrielCWT"},"content":"* Marks elderly’s details to contact book only if input has no errors.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"GabrielCWT"},"content":"1. Staff \u003cu\u003elists elderly contacts by priority (UC02)\u003c/u\u003e. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"GabrielCWT"},"content":"2. Staff calls the elderly at the top of the list. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"GabrielCWT"},"content":"3. Staff marks the elderly as called and takes notes of the call with mark command. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"GabrielCWT"},"content":"4. ContactMate updates the elderly as marked and displays a success message.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"GabrielCWT"},"content":"**Extensions:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"GabrielCWT"},"content":"* 1a. The list is empty. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"GabrielCWT"},"content":" * Use case ends. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"GabrielCWT"},"content":"* 3a. ContactMate detects an invalid INDEX or incorrect command syntax. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"GabrielCWT"},"content":" * 3a1. ContactMate shows an error message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"GabrielCWT"},"content":" * Use case resumes from step 3\\.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC02 \\- List elderly contacts by priority** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"GabrielCWT"},"content":"* List of elderly sorted by priority will be shown.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"GabrielCWT"},"content":"1. Staff inputs list command to view elderly contacts. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"GabrielCWT"},"content":"2. ContactMate updates view to show contacts sorted based on priority (date to be called).","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC03 \\- List individual elderly call history** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"GabrielCWT"},"content":"* Elderly call history will be listed only if the input has no errors.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"GabrielCWT"},"content":"1. Staff \u003cu\u003elists elderly contacts by priority (UC02)\u003c/u\u003e. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"GabrielCWT"},"content":"2. Staff inputs INDEX or NRIC of elderly they want to know the call history of. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"GabrielCWT"},"content":"3. ContactMate updates view to show a list of calls made to a specific elderly ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"-"},"content":"\tUse case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"GabrielCWT"},"content":"**Extensions:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"GabrielCWT"},"content":"* 1a. The list is empty. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"GabrielCWT"},"content":" * Use case ends. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"GabrielCWT"},"content":"* 2a. ContactMate detects an invalid INDEX or NRIC or incorrect command syntax. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"GabrielCWT"},"content":"\t* 2a1. ContactMate shows an error message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 2\\.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC04 \\- Delete elderly from the call list** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"GabrielCWT"},"content":"* Delete elderly from the contact list only if input has no errors.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"GabrielCWT"},"content":"1. Staff \u003cu\u003elists elderly contacts by priority (UC02)\u003c/u\u003e. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"GabrielCWT"},"content":"2. Staff inputs the NRIC or INDEX of elderly they want to delete. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"GabrielCWT"},"content":"3. ContactMate prompts the Staff for confirmation before deletion. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"GabrielCWT"},"content":"4. Staff confirms the deletion. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"GabrielCWT"},"content":"5. ContactMate deletes the elderly and confirms the successful deletion for Staff.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"GabrielCWT"},"content":" Use case ends.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"GabrielCWT"},"content":"**Extensions:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"GabrielCWT"},"content":"* 1a. The list is empty. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"GabrielCWT"},"content":" * Use case ends. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"GabrielCWT"},"content":"* 2a. ContactMate detects an invalid INDEX or invalid NRIC or incorrect command syntax. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"GabrielCWT"},"content":"\t* 2a1. ContactMate shows an error message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 2\\. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"GabrielCWT"},"content":"* 3a. Staff cancels the deletion. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"GabrielCWT"},"content":"\t* 3a1. ContactMate shows a cancellation message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case ends.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC05 \\- Add new elderly who have joined the Befriending Program, with appropriate details and fields** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"GabrielCWT"},"content":"* Adds elderly to contact book only if input has no errors.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"GabrielCWT"},"content":"1. Staff inputs details for the elderly they want to add to the system. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"GabrielCWT"},"content":"2. ContactMate adds the new elderly and shows the updated list with the newly added elderly.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"GabrielCWT"},"content":" Use case ends.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"GabrielCWT"},"content":"**Extensions:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"GabrielCWT"},"content":"* 1a. ContactMate detects an invalid INDEX or invalid NRIC or incorrect command syntax. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"GabrielCWT"},"content":"\t* 1a1. ContactMate shows an error message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 1\\. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"GabrielCWT"},"content":"* 1b. ContactMate detects that the elderly being added has an NRIC matching someone in the contact book. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"GabrielCWT"},"content":"\t* 1b1. ContactMate shows an error message saying this elderly already exists. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 1\\. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"GabrielCWT"},"content":"* 1c. ContactMate detects that the elderly being added has a matching name, phone number or email with someone in the contact book. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"GabrielCWT"},"content":"\t* 1c1. ContactMate shows a warning message that the elderly added has a matching field. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 2\\.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"GabrielCWT"},"content":"1. A user with above-average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"GabrielCWT"},"content":"2. The product should be a single-user system.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"GabrielCWT"},"content":"3. The product should not rely on a remote server.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"GabrielCWT"},"content":"4. It should accommodate up to 250 elderly without noticeable performance slowdowns during typical usage.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"GabrielCWT"},"content":"5. The product should respond within two seconds.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"GabrielCWT"},"content":"6. The product should work on Windows, Linux and Mac as long as they have `Java 17` installed.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"GabrielCWT"},"content":"* **AAC**: Active Ageing Centre. A recreational centre that supports elderly in the area.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"GabrielCWT"},"content":"* **Befriending** Program: Program which elderly signs up for to receive support from an AAC.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":135,"-":361}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"brendanng7"},"content":"title: \"ContactMate\"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":"repository: \"AY2425S1-CS2103T-F14b-3/tp\"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"brendanng7":2,"-":13}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"brendanng7"},"content":" content: \"ContactMate\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12","isFullCredit":false}],"authorContributionMap":{"brendanng7":1,"-":294}},{"path":"docs/team/brendanng7.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"brendanng7"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"brendanng7"},"content":"layout: page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"brendanng7"},"content":"title: brendanng7\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"brendanng7"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"brendanng7"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"brendanng7"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"brendanng7"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"brendanng7"},"content":"* **Project management**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"brendanng7"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"brendanng7"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"brendanng7"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"brendanng7"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"brendanng7"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"brendanng7"},"content":" * User Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"brendanng7"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":"* **Community**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":"* **Tools**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"brendanng7"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"brendanng7":46}},{"path":"docs/team/gabrielcwt.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"layout: page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"title: Gabriel Chang\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":"* **Project management**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" * User Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":"* **Community**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":"* **Tools**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" * Uses codecov to check code coverage","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":44}},{"path":"docs/team/linette.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"linette-g"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"linette-g"},"content":"layout: page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"linette-g"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"linette-g"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"linette-g"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"linette-g"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"linette-g"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"linette-g"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"linette-g"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"linette-g"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"linette-g"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"linette-g"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"linette-g"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":"* **Project management**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"linette-g"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" * User Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"linette-g"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"linette-g"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":"* **Community**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"linette-g"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"linette-g"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"linette-g"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":"* **Tools**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"linette-g":46}},{"path":"docs/team/zenkoh1.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Zenkoh1"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Zenkoh1"},"content":"layout: page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Zenkoh1"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Zenkoh1"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Zenkoh1"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Zenkoh1"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Zenkoh1"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Zenkoh1"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Zenkoh1"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Zenkoh1"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Zenkoh1"},"content":"* **Project management**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Zenkoh1"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Zenkoh1"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" * User Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Zenkoh1"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Zenkoh1"},"content":"* **Community**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Zenkoh1"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":"* **Tools**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":46}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"zyng233"},"content":" * Returns an unmodifiable view of the call history.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"zyng233"},"content":" ContactDateList getCallHistory();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"zyng233":6,"-":50}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zyng233"},"content":" public ContactDateList getCallHistory() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"zyng233"},"content":" return model.getDisplayedCallHistory();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"zyng233":6,"-":88}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"linette-g"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_NRIC \u003d \"The person nric provided is not within list\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" builder.append(String.format(\"%s - %s\", person.getNric(), person.getName()))","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" .append(\"; Tags: \")","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" .append(person.getCallFrequency())","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" .append(\"; Call Frequency: \");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"linette-g":1,"Zenkoh1":1,"brendanng7":3,"-":49}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" + PREFIX_NRIC + \"NRIC \"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":" + PREFIX_CALL_FREQUENCY + \"CALL FREQUENCY \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":" + PREFIX_NRIC + \"S5087089H \"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" + PREFIX_CALL_FREQUENCY + \"7 \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":2,"brendanng7":4,"-":84}},{"path":"src/main/java/seedu/address/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" public String getPersonName() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":" String[] parts \u003d feedbackToUser.split(\": \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" return parts.length \u003e 1 ? parts[1].strip() : \"\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"zyng233":4,"-":82}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"linette-g"},"content":" * Deletes a person identified using it\u0027s displayed index or NRIC from the address book.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":" + \"Parameters: INDEX (must be a positive integer) or NRIC (must be government issued)\\n\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 or \" + COMMAND_WORD + \" S6253285H\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" private final Nric targetNric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":" * Creates a DeleteCommand to delete person at the specified {@code Index}.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":" * @param targetIndex The {@code Index} of the person to be deleted.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"linette-g"},"content":" this.targetNric \u003d null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":" * Creates a DeleteCommand to delete person with the specified {@code Nric}.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" * @param targetNric The {@code Nric} of the person to be deleted.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" public DeleteCommand(Nric targetNric) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"linette-g"},"content":" this.targetNric \u003d targetNric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"linette-g"},"content":" this.targetIndex \u003d null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"linette-g"},"content":" Person personToDelete;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"linette-g"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"linette-g"},"content":" personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"linette-g"},"content":" personToDelete \u003d model.getPersonByNric(targetNric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"linette-g"},"content":" if (personToDelete \u003d\u003d null) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"linette-g"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"linette-g"},"content":" return (targetIndex !\u003d null \u0026\u0026 targetIndex.equals(otherDeleteCommand.targetIndex))","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"linette-g"},"content":" || (targetNric !\u003d null \u0026\u0026 targetNric.equals(otherDeleteCommand.targetNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"linette-g"},"content":" .add(\"targetNric\", targetNric)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"linette-g":31,"-":64}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" + \"by the index number used in the displayed person list or NRIC. \"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" + \"Parameters: INDEX (must be a positive integer) or NRIC (must be government issued) \"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" + \"[\" + PREFIX_NRIC + \"NRIC] \"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" + \"[\" + PREFIX_CALL_FREQUENCY + \"CALL FREQUENCY] \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"linette-g"},"content":" private final Nric nric;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"linette-g"},"content":" this.nric \u003d null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"linette-g"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"linette-g"},"content":" * @param nric of the person in the filtered person list to edit","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"linette-g"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"linette-g"},"content":" public EditCommand(Nric nric, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"linette-g"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"linette-g"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"linette-g"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"linette-g"},"content":" this.index \u003d null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"linette-g"},"content":" Person personToEdit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"linette-g"},"content":" Person editedPerson;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"linette-g"},"content":" if (index !\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"linette-g"},"content":" personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"linette-g"},"content":" editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"linette-g"},"content":" personToEdit \u003d model.getPersonByNric(nric);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"linette-g"},"content":" if (personToEdit \u003d\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"linette-g"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"linette-g"},"content":" editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Zenkoh1"},"content":" Nric updatedNric \u003d editPersonDescriptor.getNric().orElse(personToEdit.getNric());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDates \u003d editPersonDescriptor.getContactDates().orElse(personToEdit.getContactDates());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"brendanng7"},"content":" CallFrequency updatedCallFrequency \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"brendanng7"},"content":" editPersonDescriptor.getCallFrequency().orElse(personToEdit.getCallFrequency());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"GabrielCWT"},"content":" return new Person(updatedNric, updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"brendanng7"},"content":" contactDates, updatedCallFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"linette-g"},"content":" return (index !\u003d null \u0026\u0026 index.equals(otherEditCommand.index)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"linette-g"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor))","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"linette-g"},"content":" || (nric !\u003d null \u0026\u0026 nric.equals(otherEditCommand.nric)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"linette-g"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"linette-g"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"Zenkoh1"},"content":" private Nric nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"GabrielCWT"},"content":" private ContactDateList contactDates;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"brendanng7"},"content":" private CallFrequency callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"GabrielCWT"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"Zenkoh1"},"content":" setNric(toCopy.nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"GabrielCWT"},"content":" setContactDates(toCopy.contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"brendanng7"},"content":" setCallFrequency(toCopy.callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"brendanng7"},"content":" return CollectionUtil.isAnyNonNull(nric, name, phone, email, address, tags, callFrequency);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"Zenkoh1"},"content":" public void setNric(Nric nric) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"Zenkoh1"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"Zenkoh1"},"content":" public Optional\u003cNric\u003e getNric() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"Zenkoh1"},"content":" return Optional.ofNullable(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"GabrielCWT"},"content":" public Optional\u003cContactDateList\u003e getContactDates() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"GabrielCWT"},"content":" return Optional.ofNullable(contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"GabrielCWT"},"content":" public void setContactDates(ContactDateList contactDates) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"GabrielCWT"},"content":" this.contactDates \u003d contactDates;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"brendanng7"},"content":" public Optional\u003cCallFrequency\u003e getCallFrequency() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"brendanng7"},"content":" return Optional.ofNullable(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"brendanng7"},"content":" public void setCallFrequency(CallFrequency callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"brendanng7"},"content":" this.callFrequency \u003d callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"Zenkoh1"},"content":" return Objects.equals(nric, otherEditPersonDescriptor.nric)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Zenkoh1"},"content":" \u0026\u0026 Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"brendanng7"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"brendanng7"},"content":" \u0026\u0026 Objects.equals(callFrequency, otherEditPersonDescriptor.callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"Zenkoh1"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"brendanng7"},"content":" .add(\"call frequency\", callFrequency)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"linette-g":34,"Zenkoh1":17,"GabrielCWT":15,"brendanng7":21,"-":230}},{"path":"src/main/java/seedu/address/logic/commands/HistoryCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import java.util.List;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" * Finds and lists the call history of the elderly in address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":"public class HistoryCommand extends Command {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":" public static final String COMMAND_WORD \u003d \"history\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" + \": List call history of the person identified by the index number or NRIC in the displayed person list.\\n\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" + \"Parameters: INDEX (must be a positive integer) or NRIC (must be government issued)\\n\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 or \" + COMMAND_WORD + \" S6253285H\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" public static final String MESSAGE_SHOW_HISTORY_SUCCESS \u003d \"Call history of person: %1$s\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" private final Nric targetNric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":" * Creates a HistoryCommand to find the call history of the person at the specified {@code Index}","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":" *","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"zyng233"},"content":" * @param targetIndex The {@code Index} of the person to be found.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"zyng233"},"content":" public HistoryCommand(Index targetIndex) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"zyng233"},"content":" this.targetNric \u003d null;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" * Creates a HistoryCommand to find the call history of the person with the specified {@code Nric}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"zyng233"},"content":" *","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"zyng233"},"content":" * @param targetNric The {@code Nric} of the person to be found.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zyng233"},"content":" public HistoryCommand(Nric targetNric) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zyng233"},"content":" this.targetNric \u003d targetNric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"zyng233"},"content":" this.targetIndex \u003d null;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"zyng233"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"zyng233"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"zyng233"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"zyng233"},"content":" Person personFound;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"zyng233"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"zyng233"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"zyng233"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"zyng233"},"content":" personFound \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"zyng233"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"zyng233"},"content":" personFound \u003d model.getPersonByNric(targetNric);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zyng233"},"content":" if (personFound \u003d\u003d null) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"zyng233"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"zyng233"},"content":" ContactDateList callHistory \u003d model.getCallHistory(personFound);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"zyng233"},"content":" model.updateDisplayedList(callHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zyng233"},"content":" return new CommandResult(String.format(MESSAGE_SHOW_HISTORY_SUCCESS, personFound.getName()));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zyng233"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"zyng233"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zyng233"},"content":" return true;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":" if (!(other instanceof HistoryCommand)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" return false;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"zyng233"},"content":" HistoryCommand otherHistoryCommand \u003d (HistoryCommand) other;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"zyng233"},"content":" return (targetIndex !\u003d null \u0026\u0026 targetIndex.equals(otherHistoryCommand.targetIndex))","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"zyng233"},"content":" || (targetNric !\u003d null \u0026\u0026 targetNric.equals(otherHistoryCommand.targetNric));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zyng233"},"content":" public String toString() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"zyng233"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"zyng233"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"zyng233"},"content":" .add(\"targetNric\", targetNric)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"zyng233"},"content":" .toString();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":99}},{"path":"src/main/java/seedu/address/logic/commands/MarkCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import java.util.List;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" * Marks a person as contacted.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"linette-g"},"content":" * Identified using it\u0027s displayed index or NRIC from the address book.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" public static final String COMMAND_WORD \u003d \"mark\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" + \": Marks the person identified by the index number used in the displayed person list as contacted.\\n\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":" + \"Parameters: INDEX (must be a positive integer) or NRIC (must be government issued)\\n\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 or \" + COMMAND_WORD + \" S6253285H\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" public static final String MESSAGE_MARK_PERSON_SUCCESS \u003d \"Marked Person: %1$s\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" private final Nric targetNric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" private final ContactDate contactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" * Creates a MarkCommand to mark person at the specified {@code Index} as called.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" * @param targetIndex The {@code Index} of the person to be marked.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" public MarkCommand(Index targetIndex, ContactDate contactDate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" this.targetNric \u003d null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" this.contactDate \u003d contactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":" * Creates a MarkCommand to mark person with the specified {@code Nric} as called.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"linette-g"},"content":" * @param targetNric The {@code Nric} of the person to be marked.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" public MarkCommand(Nric targetNric, ContactDate contactDate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"linette-g"},"content":" this.targetNric \u003d targetNric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"linette-g"},"content":" this.targetIndex \u003d null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" this.contactDate \u003d contactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"GabrielCWT"},"content":" requireNonNull(model);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"linette-g"},"content":" Person personToMark;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"linette-g"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"GabrielCWT"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"linette-g"},"content":" personToMark \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"linette-g"},"content":" personToMark \u003d model.getPersonByNric(targetNric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"linette-g"},"content":" if (personToMark \u003d\u003d null) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"linette-g"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" model.markAsContacted(personToMark, contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":" return new CommandResult(String.format(MESSAGE_MARK_PERSON_SUCCESS, Messages.format(personToMark)));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":" if (!(other instanceof MarkCommand)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand otherMarkCommand \u003d (MarkCommand) other;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"GabrielCWT"},"content":" return ((targetIndex !\u003d null \u0026\u0026 targetIndex.equals(otherMarkCommand.targetIndex))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"GabrielCWT"},"content":" || (targetNric !\u003d null \u0026\u0026 targetNric.equals(otherMarkCommand.targetNric)))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"GabrielCWT"},"content":" \u0026\u0026 contactDate.equals(otherMarkCommand.contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"GabrielCWT"},"content":" public String toString() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"GabrielCWT"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"linette-g"},"content":" .add(\"targetNric\", targetNric)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":" .toString();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"linette-g":30,"GabrielCWT":71}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NRIC, PREFIX_NAME,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":" PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" PREFIX_CALL_FREQUENCY, PREFIX_TAG);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NRIC, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" PREFIX_EMAIL, PREFIX_CALL_FREQUENCY)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NRIC, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" PREFIX_ADDRESS, PREFIX_CALL_FREQUENCY);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" Nric nric \u003d ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" CallFrequency callFrequency \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":" ParserUtil.parseCallFrequency(argMultimap.getValue(PREFIX_CALL_FREQUENCY).get());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" Person person \u003d new Person(nric, name, phone, email, address, tagList, callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":2,"brendanng7":13,"-":57}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.HistoryCommand;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" case MarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" return new MarkCommandParser().parse(arguments);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" case HistoryCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"zyng233"},"content":" return new HistoryCommandParser().parse(arguments);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":4,"zyng233":4,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":" public static final Prefix PREFIX_NRIC \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"content":" public static final Prefix PREFIX_CALL_FREQUENCY \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" public static final Prefix PREFIX_NOTES \u003d new Prefix(\"o/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":1,"GabrielCWT":1,"brendanng7":1,"-":14}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"linette-g"},"content":" if (ParserUtil.isParsingIndex(args)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":" } else if (ParserUtil.isParsingNric(args)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":" Nric nric \u003d ParserUtil.parseNric(args);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" return new DeleteCommand(nric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"linette-g":7,"-":25}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NRIC, PREFIX_NAME,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":" PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" PREFIX_CALL_FREQUENCY, PREFIX_TAG);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":" String preamble \u003d argMultimap.getPreamble();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":" Index index \u003d null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" Nric nric \u003d null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" if (ParserUtil.isParsingIndex(preamble)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"linette-g"},"content":" index \u003d ParserUtil.parseIndex(preamble);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"linette-g"},"content":" } else if (ParserUtil.isParsingNric(preamble)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"linette-g"},"content":" nric \u003d ParserUtil.parseNric(preamble);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"linette-g"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"linette-g"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NRIC, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" PREFIX_ADDRESS, PREFIX_CALL_FREQUENCY);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" if (argMultimap.getValue(PREFIX_NRIC).isPresent()) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" editPersonDescriptor.setNric(ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get()));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"brendanng7"},"content":" if (argMultimap.getValue(PREFIX_CALL_FREQUENCY).isPresent()) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"brendanng7"},"content":" editPersonDescriptor.setCallFrequency(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"brendanng7"},"content":" ParserUtil.parseCallFrequency(argMultimap.getValue(PREFIX_CALL_FREQUENCY).get()));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"linette-g"},"content":" if (index !\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"linette-g"},"content":" return new EditCommand(nric, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"linette-g":15,"Zenkoh1":5,"brendanng7":9,"-":78}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" // TODO: Implement the logic for searching by NRIC","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":1,"-":33}},{"path":"src/main/java/seedu/address/logic/parser/HistoryCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.HistoryCommand;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":" * Parses input arguments and creates a new HistoryCommand object","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"public class HistoryCommandParser implements Parser\u003cHistoryCommand\u003e {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":" * Parses the given {@code String} of arguments in the context of the HistoryCommand","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" * and returns a HistoryCommand object for execution.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" *","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":" public HistoryCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":" if (ParserUtil.isParsingIndex(args)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" return new HistoryCommand(index);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" } else if (ParserUtil.isParsingNric(args)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":" Nric nric \u003d ParserUtil.parseNric(args);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" return new HistoryCommand(nric);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, HistoryCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":33}},{"path":"src/main/java/seedu/address/logic/parser/MarkCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":" * Parses input arguments and creates a new MarkCommand object","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"public class MarkCommandParser implements Parser\u003cMarkCommand\u003e {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" * Parses the given {@code String} of arguments in the context of the MarkCommand","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" * and returns an MarkCommand object for execution.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" public MarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" String preamble \u003d argMultimap.getPreamble();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" String notes \u003d argMultimap.getValue(PREFIX_NOTES).orElse(\"\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d ContactDate.createCurrentDate(notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" if (ParserUtil.isParsingIndex(preamble)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" Index index \u003d ParserUtil.parseIndex(preamble);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" return new MarkCommand(index, contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" } else if (ParserUtil.isParsingNric(preamble)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" Nric nric \u003d ParserUtil.parseNric(preamble);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" return new MarkCommand(nric, contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" throw new ParseException(","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"linette-g":3,"GabrielCWT":36}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" * Parses a {@code String nric} into a {@code Nric}.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" * @throws ParseException if the given {@code nric} is invalid.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" public static Nric parseNric(String nric) throws ParseException {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" String trimmedNric \u003d nric.trim();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" if (!Nric.isValidNric(trimmedNric)) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" throw new ParseException(Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" return new Nric(trimmedNric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"brendanng7"},"content":" * Parses a {@code String callFrequency} into an {@code CallFrequency}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"brendanng7"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"brendanng7"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"brendanng7"},"content":" * @throws ParseException if the given {@code callFrequency} is invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"brendanng7"},"content":" public static CallFrequency parseCallFrequency(String callFrequency) throws ParseException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"brendanng7"},"content":" requireNonNull(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"brendanng7"},"content":" String trimmedCallFrequency \u003d callFrequency.trim();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"brendanng7"},"content":" if (!CallFrequency.isValidCallFrequency(trimmedCallFrequency)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"brendanng7"},"content":" throw new ParseException(CallFrequency.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"brendanng7"},"content":" return new CallFrequency(trimmedCallFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"linette-g"},"content":" * Checks if the provided argument can be parsed as an {@code Index}.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"linette-g"},"content":" * @param args The string argument to be parsed.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"linette-g"},"content":" * @return {@code true} if the argument can be parsed as an {@code Index}, {@code false} otherwise.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"linette-g"},"content":" public static boolean isParsingIndex(String args) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"linette-g"},"content":" try {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"linette-g"},"content":" ParserUtil.parseIndex(args);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"linette-g"},"content":" return true;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"linette-g"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"linette-g"},"content":" return false;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"linette-g"},"content":" * Checks if the provided argument can be parsed as an {@code Nric}.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"linette-g"},"content":" * @param args The string argument to be parsed.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"linette-g"},"content":" * @return {@code true} if the argument can be parsed as an {@code Nric}, {@code false} otherwise.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"linette-g"},"content":" public static boolean isParsingNric(String args) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"linette-g"},"content":" try {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"linette-g"},"content":" ParserUtil.parseNric(args);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"linette-g"},"content":" return true;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"linette-g"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"linette-g"},"content":" return false;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"linette-g":30,"Zenkoh1":16,"brendanng7":16,"-":124}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" * Marks the given person as contacted.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":" * The person must exist in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"GabrielCWT"},"content":" void markAsContacted(Person target, ContactDate contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"zyng233"},"content":" * Returns the call history of the given person in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"zyng233"},"content":" * The person must exist in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"zyng233"},"content":" ContactDateList getCallHistory(Person target);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"zyng233"},"content":" * Updates the displayed list to show the call history of the given person.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"zyng233"},"content":" * The call history must not be empty.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":" void updateDisplayedList(ContactDateList callHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"zyng233"},"content":" * Returns the displayed call history.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"zyng233"},"content":" ContactDateList getDisplayedCallHistory();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"linette-g"},"content":" Person getPersonByNric(Nric nric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"linette-g":2,"GabrielCWT":8,"zyng233":18,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" private final ObservableList\u003cString\u003e displayedCallHistory;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" this.displayedCallHistory \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(Person target, ContactDate contactDate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"GabrielCWT"},"content":" requireNonNull(target);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"GabrielCWT"},"content":" target.markAsContacted(contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"linette-g"},"content":" @Override","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"linette-g"},"content":" public Person getPersonByNric(Nric nric) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"linette-g"},"content":" for (Person person : filteredPersons) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"linette-g"},"content":" if (person.getNric().equals(nric)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"linette-g"},"content":" return person;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"linette-g"},"content":" return null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"zyng233"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Call History \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"zyng233"},"content":" public ContactDateList getCallHistory(Person target) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"zyng233"},"content":" requireNonNull(target);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"zyng233"},"content":" return target.getContactDates();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"zyng233"},"content":" public void updateDisplayedList(ContactDateList callHistory) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"zyng233"},"content":" requireNonNull(callHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"zyng233"},"content":" displayedCallHistory.clear();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"zyng233"},"content":" for (ContactDate date : callHistory) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"zyng233"},"content":" displayedCallHistory.add(date.toString());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"zyng233"},"content":" public ContactDateList getDisplayedCallHistory() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"zyng233"},"content":" ContactDateList callHistory \u003d new ContactDateList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"zyng233"},"content":" for (String call : displayedCallHistory) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"zyng233"},"content":" ContactDate contactDate \u003d new ContactDate(call, \"\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"zyng233"},"content":" callHistory.add(contactDate);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"zyng233"},"content":" return callHistory;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"zyng233"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"zyng233"},"content":" \u0026\u0026 displayedCallHistory.equals(otherModelManager.displayedCallHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"linette-g":11,"GabrielCWT":6,"zyng233":33,"-":147}},{"path":"src/main/java/seedu/address/model/contactdate/ContactDate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.model.contactdate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":" * Represents a Person\u0027s contacted date in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidContactDate(String)}","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDate {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" \"Dates should be in the format of YYYY-MM-DD\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2}\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" public final LocalDate value;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" private final String notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" * Constructs a {@code ContactDate}.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" *","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" * @param date A valid date and time.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate(String date, String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" requireNonNull(date);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" requireNonNull(notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" checkArgument(isValidContactDate(date), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" value \u003d LocalDate.parse(date);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" this.notes \u003d notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" * Returns true if a given string is a valid date.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" public static boolean isValidContactDate(String test) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" try {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" if (!test.matches(VALIDATION_REGEX)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" LocalDate.parse(test);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" * Returns the current date.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" public static ContactDate createCurrentDate(String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" return new ContactDate(LocalDate.now().toString(), notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"brendanng7"},"content":" * Returns a new {@code ContactDate} that is a specified number of days after the current date.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" * The number of days is determined by the {@code callFrequency}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"brendanng7"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"brendanng7"},"content":" * @param callFrequency The frequency of calls, represented as a {@code CallFrequency} object,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"brendanng7"},"content":" * which determines how many days to add to the current date.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"brendanng7"},"content":" * @return A new {@code ContactDate} that is {@code callFrequency} days after the current date.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"brendanng7"},"content":" public ContactDate add(CallFrequency callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"brendanng7"},"content":" int daysToAdd \u003d Integer.parseInt(callFrequency.value); // Parse the number of days from callFrequency","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"GabrielCWT"},"content":" return new ContactDate(value.plusDays(daysToAdd).toString(), \"\"); // Create and return a new ContactDate","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":" public String toString() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" return value.toString();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" public String getNotes() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":" return notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"GabrielCWT"},"content":" if (!(other instanceof ContactDate)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"GabrielCWT"},"content":" ContactDate otherDate \u003d (ContactDate) other;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"GabrielCWT"},"content":" return value.equals(otherDate.value) \u0026\u0026 notes.equals(otherDate.notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"GabrielCWT"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"GabrielCWT"},"content":" return value.hashCode();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":82,"zyng233":2,"brendanng7":15}},{"path":"src/main/java/seedu/address/model/contactdate/ContactDateList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.model.contactdate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":" * Represents a List of ContactDates in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDateList extends ArrayList\u003cContactDate\u003e {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateList() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":" super();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" * Creates a ContactDateList with the given ContactDates.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" * @param contactDatesToAdd","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateList(ContactDate ...contactDatesToAdd) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" super();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" for (ContactDate contactDate : contactDatesToAdd) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" this.add(contactDate);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateList(ArrayList\u003cContactDate\u003e contactDates) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" super(contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" * Adds all the ContactDates in the given ContactDateList to this ContactDateList.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" * @param contactDateList","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" public void addAll(ContactDateList contactDateList) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" for (ContactDate contactDate : contactDateList) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" this.add(contactDate);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" * Adds the current date to the ContactDateList.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" this.add(ContactDate.createCurrentDate(notes));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" * Adds the given ContactDate to the ContactDateList.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" * @param contactDate","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(ContactDate contactDate) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" this.add(contactDate);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" * Returns the last ContactDate in the ContactDateList.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":" * @return the most recent ContactDate.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"GabrielCWT"},"content":" * @throws IndexOutOfBoundsException if the list is empty.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate getLastContacted() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" if (this.size() \u003d\u003d 0) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":" throw new IndexOutOfBoundsException(\"No ContactDates in the list.\");","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"GabrielCWT"},"content":" return this.get(this.size() - 1);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"GabrielCWT"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"GabrielCWT"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zyng233"},"content":" if (!(other instanceof ContactDateList)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zyng233"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"zyng233"},"content":" ContactDateList that \u003d (ContactDateList) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"zyng233"},"content":" if (this.size() \u003d\u003d that.size()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zyng233"},"content":" for (int i \u003d 0; i \u003c this.size(); i++) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"zyng233"},"content":" if (!this.get(i).equals(that.get(i))) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"zyng233"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":74,"zyng233":14}},{"path":"src/main/java/seedu/address/model/person/CallFrequency.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"brendanng7"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"brendanng7"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":" * Represents a Person\u0027s call frequency in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidCallFrequency(String)}","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":"public class CallFrequency {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":" \"Calling frequency is in days and has to be a positive number less than or equal to 7\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"content":" public static final String VALIDATION_REGEX \u003d \"^[1-7]$\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"brendanng7"},"content":" public final String value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":" * Constructs a {@code CallFrequency}.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"brendanng7"},"content":" *","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"brendanng7"},"content":" * @param callFrequency A valid date.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"brendanng7"},"content":" public CallFrequency(String callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"brendanng7"},"content":" requireNonNull(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"brendanng7"},"content":" checkArgument(isValidCallFrequency(callFrequency), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"brendanng7"},"content":" value \u003d callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"brendanng7"},"content":" * Returns true if a given string is a valid call frequency.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":" public static boolean isValidCallFrequency(String test) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"brendanng7"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":" return value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"brendanng7"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" if (!(other instanceof CallFrequency)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" CallFrequency otherCallFrequency \u003d (CallFrequency) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":" return value.equals(otherCallFrequency.value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"brendanng7"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"brendanng7"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"brendanng7":60}},{"path":"src/main/java/seedu/address/model/person/Nric.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Zenkoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Zenkoh1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Zenkoh1"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Zenkoh1"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":"/**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":" * Represents a Person\u0027s NRIC in the address book.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Zenkoh1"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNric(String)}","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Zenkoh1"},"content":"public class Nric {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Zenkoh1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Zenkoh1"},"content":" \"Please ensure that the NRIC is a valid one issued by the Singapore government.\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":" /*","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":" * NRIC should start with S, T, F or G followed by 7 digits and end with a character.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Zenkoh1"},"content":" public static final String VALIDATION_REGEX \u003d \"(?i)^([STFG])(\\\\d{7})([A-Z])$\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":" public final String value;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":" * Constructs a {@code Nric}.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" * @param nric A valid NRIC.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" public Nric(String nric) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Zenkoh1"},"content":" checkArgument(isValidNric(nric), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":" value \u003d nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if a given string is a valid nric.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" public static boolean isValidNric(String test) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" Pattern r \u003d Pattern.compile(VALIDATION_REGEX);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":" Matcher m \u003d r.matcher(test);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" if (m.find()) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" return isValidCheckSum(m.group(1), m.group(2), m.group(3));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" } else {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" return false;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if the checksum of the NRIC is valid.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" * Checksum as used by the Singapore government to validate NRIC numbers.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":" * Any magic numbers or characters used in the method are based on the checksum algorithm.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Zenkoh1"},"content":" * @param firstChar The first character of the NRIC number.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" * @param middleDigits The middle 7 digits of the NRIC number.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":" * @param lastChar The last character of the NRIC number, the checksum.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":" * @return true if the checksum is valid, false otherwise.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" private static boolean isValidCheckSum(String firstChar, String middleDigits, String lastChar) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" // Weights for each digit in the NRIC number (in order).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" int[] weights \u003d {2, 7, 6, 5, 4, 3, 2};","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" int sum \u003d 0;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" // Multiply each digit in the NRIC number by its weight i.e. 2 7 6 5 4 3 2 in order.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" for (int i \u003d 0; i \u003c middleDigits.length(); i++) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" sum +\u003d Integer.parseInt(middleDigits.substring(i, i + 1)) * weights[i];","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" // If the first letter of the NRIC starts with T or G, add 4 to the total.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":" if (firstChar.equalsIgnoreCase(\"T\") || firstChar.equalsIgnoreCase(\"G\")) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Zenkoh1"},"content":" sum +\u003d 4;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" // Find the remainder of (sum calculated above) mod 11","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Zenkoh1"},"content":" int remainder \u003d sum % 11;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":" if (firstChar.equalsIgnoreCase(\"S\") || firstChar.equalsIgnoreCase(\"T\")) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Zenkoh1"},"content":" String[] remainderToCheckSumArr \u003d {\"J\", \"Z\", \"I\", \"H\", \"G\", \"F\", \"E\", \"D\", \"C\", \"B\", \"A\"};","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Zenkoh1"},"content":" return lastChar.equalsIgnoreCase(remainderToCheckSumArr[remainder]);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":" } else if (firstChar.equalsIgnoreCase(\"F\") || firstChar.equalsIgnoreCase(\"G\")) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" String[] remainderToCheckSumArr \u003d {\"X\", \"W\", \"U\", \"T\", \"R\", \"Q\", \"P\", \"N\", \"M\", \"L\", \"K\"};","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" return lastChar.equalsIgnoreCase(remainderToCheckSumArr[remainder]);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Zenkoh1"},"content":" } else {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":" // Should never reach here as the first character of the NRIC should be S, T, F or G,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Zenkoh1"},"content":" // and this is already checked in the isValidNric method.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Zenkoh1"},"content":" assert false : \"Invalid first character of NRIC\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Zenkoh1"},"content":" return false;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Zenkoh1"},"content":" public String toString() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Zenkoh1"},"content":" return value;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Zenkoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Zenkoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Zenkoh1"},"content":" return true;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Zenkoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Zenkoh1"},"content":" if (!(other instanceof Nric)) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Zenkoh1"},"content":" return false;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Zenkoh1"},"content":" Nric otherNric \u003d (Nric) other;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Zenkoh1"},"content":" // Ignore case as NRIC is case-insensitive","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Zenkoh1"},"content":" return value.equalsIgnoreCase(otherNric.value);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Zenkoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Zenkoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Zenkoh1"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":118}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Zenkoh1"},"content":" private final Nric nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" private final ContactDateList contactDates \u003d new ContactDateList();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" private final CallFrequency callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" public Person(Nric nric, Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" ContactDateList contactDates, CallFrequency callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":" requireAllNonNull(nric, name, phone, email, address, tags, contactDates, callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" this.contactDates.addAll(contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":" this.callFrequency \u003d callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" * For creating a new person. Every field but contact date must be present and not null.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" public Person(Nric nric, Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":" CallFrequency callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" this(nric, name, phone, email, address, tags, new ContactDateList(ContactDate.createCurrentDate(\"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" callFrequency);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":" public Nric getNric() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":" return nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateList getContactDates() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" return contactDates;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate getLastContacted() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" return contactDates.getLastContacted();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"brendanng7"},"content":" public CallFrequency getCallFrequency() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"brendanng7"},"content":" return callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"brendanng7"},"content":" public ContactDate getNextContactDate() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"brendanng7"},"content":" return getLastContacted().add(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"GabrielCWT"},"content":" * Mark the person as contacted today.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(ContactDate contactDate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"GabrielCWT"},"content":" contactDates.markAsContacted(contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if both persons have the same nric.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Zenkoh1"},"content":" \u0026\u0026 otherPerson.getNric().equals(getNric());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Zenkoh1"},"content":" return nric.equals(otherPerson.nric)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Zenkoh1"},"content":" \u0026\u0026 name.equals(otherPerson.name)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"brendanng7"},"content":" return Objects.hash(nric, name, phone, email, address, tags, callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Zenkoh1"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"brendanng7"},"content":" .add(\"call frequency\", callFrequency)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":9,"GabrielCWT":27,"brendanng7":15,"-":114}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S7083906G\"), new Name(\"Alex Yeoh\"), new Phone(\"87438807\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"alexyeoh@example.com\"), new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"friends\"), new ContactDateList(new ContactDate(\"2024-09-26\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"5\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S0964515B\"), new Name(\"Bernice Yu\"), new Phone(\"99272758\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"berniceyu@example.com\"), new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"colleagues\", \"friends\"), new ContactDateList(new ContactDate(\"2024-09-28\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"6\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S7419603I\"), new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"charlotte@example.com\"), new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"neighbours\"), new ContactDateList(new ContactDate(\"2024-09-27\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"7\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S9496815A\"), new Name(\"David Li\"), new Phone(\"91031282\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"lidavid@example.com\"), new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"family\"), new ContactDateList(new ContactDate(\"2024-09-27\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"6\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S8388963B\"), new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"irfan@example.com\"), new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"classmates\"), new ContactDateList(new ContactDate(\"2024-09-28\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"5\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S7495552E\"), new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"royb@example.com\"), new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"colleagues\"), new ContactDateList(new ContactDate(\"2024-09-26\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"3\"))","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":13,"GabrielCWT":8,"brendanng7":7,"-":42}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedContactDate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":" * Jackson-friendly version of {@link ContactDate}.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"public class JsonAdaptedContactDate {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"ContactDate\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" private final String date;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" private final String notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" * Constructs a {@code JsonAdaptedContactDate} with the given {@code contactDate}.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" @JsonCreator","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" public JsonAdaptedContactDate(@JsonProperty(\"date\") String date, @JsonProperty(\"notes\") String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" this.date \u003d date;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" this.notes \u003d notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" * Converts a given {@code ContactDate} into this class for Jackson use.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" public JsonAdaptedContactDate(ContactDate source) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" date \u003d source.value.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" notes \u003d source.getNotes();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" * Converts this Jackson-friendly adapted contact date object into the model\u0027s {@code ContactDate} object.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted contact date.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate toModelType() throws IllegalValueException {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" if (date \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"date\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" if (!ContactDate.isValidContactDate(date)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" throw new IllegalValueException(ContactDate.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" if (notes \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"notes\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" return new ContactDate(date, notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":50}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" private final String nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" private final List\u003cJsonAdaptedContactDate\u003e contactDates \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" private final String callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" public JsonAdaptedPerson(@JsonProperty(\"nric\") String nric, @JsonProperty(\"name\") String name,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" @JsonProperty(\"phone\") String phone, @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" @JsonProperty(\"contactDates\") List\u003cJsonAdaptedContactDate\u003e contactDates,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" @JsonProperty(\"callFrequency\") String callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":" this.callFrequency \u003d callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":" if (contactDates !\u003d null) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"GabrielCWT"},"content":" this.contactDates.addAll(contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" nric \u003d source.getNric().value;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"brendanng7"},"content":" callFrequency \u003d source.getCallFrequency().value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":" contactDates.addAll(source.getContactDates().stream()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" .map(JsonAdaptedContactDate::new)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"GabrielCWT"},"content":" final ArrayList\u003cContactDate\u003e personContactDates \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"GabrielCWT"},"content":" if (contactDates.isEmpty()) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"GabrielCWT"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList.class.getSimpleName()));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":" for (JsonAdaptedContactDate contactDate : contactDates) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"GabrielCWT"},"content":" personContactDates.add(contactDate.toModelType());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Zenkoh1"},"content":" if (nric \u003d\u003d null) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Zenkoh1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName()));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Zenkoh1"},"content":" if (!Nric.isValidNric(nric)) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Zenkoh1"},"content":" throw new IllegalValueException(Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Zenkoh1"},"content":" final Nric modelNric \u003d new Nric(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"brendanng7"},"content":" if (callFrequency \u003d\u003d null) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"brendanng7"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"brendanng7"},"content":" CallFrequency.class.getSimpleName()));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"brendanng7"},"content":" if (!CallFrequency.isValidCallFrequency(callFrequency)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"brendanng7"},"content":" throw new IllegalValueException(CallFrequency.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"brendanng7"},"content":" final CallFrequency modelCallFrequency \u003d new CallFrequency(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"GabrielCWT"},"content":" final ContactDateList modelContactDates \u003d new ContactDateList(personContactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"brendanng7"},"content":" return new Person(modelNric, modelName, modelPhone, modelEmail, modelAddress, modelTags,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"brendanng7"},"content":" modelContactDates, modelCallFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":13,"GabrielCWT":21,"brendanng7":18,"-":105}},{"path":"src/main/java/seedu/address/ui/CallHistoryCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":" * An UI component that displays information of a {@code CallHistory}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"public class CallHistoryCard extends UiPart\u003cHBox\u003e {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":" private static final String FXML \u003d \"CallHistoryCard.fxml\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":" @FXML","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":" private Label indexLabel;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":" @FXML","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" private Label contactDateLabel;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":" * Creates a {@code CallHistoryCard} with the given {@code CallHistory} and index to display.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":" public CallHistoryCard(ContactDate contactDate, int index) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" super(FXML);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" indexLabel.setText(index + \". \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" contactDateLabel.setText(contactDate.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":28}},{"path":"src/main/java/seedu/address/ui/CallHistoryPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":" * Panel containing the list of call history.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":"public class CallHistoryPanel extends UiPart\u003cVBox\u003e {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":" private static final String FXML \u003d \"CallHistoryPanel.fxml\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" @FXML","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":" private ListView\u003cContactDate\u003e callHistoryView;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":" private ObservableList\u003cContactDate\u003e items;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" * Creates a {@code CallHistoryPanel}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" public CallHistoryPanel() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":" super(FXML);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" items \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" callHistoryView.setItems(items);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" callHistoryView.setCellFactory(param -\u003e new ListCell\u003c\u003e() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":" protected void updateItem(ContactDate contactDate, boolean empty) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":" super.updateItem(contactDate, empty);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":" if (empty || contactDate \u003d\u003d null) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"zyng233"},"content":" setGraphic(null);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zyng233"},"content":" setText(null);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"zyng233"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":" int index \u003d getIndex() + 1;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"zyng233"},"content":" CallHistoryCard card \u003d new CallHistoryCard(contactDate, index);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"zyng233"},"content":" setGraphic(card.getRoot());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" });","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zyng233"},"content":" * Initializes the call history panel with the given {@code ContactDateList}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"zyng233"},"content":" public void initializeCallHistory(ContactDateList history) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zyng233"},"content":" items.clear();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"zyng233"},"content":" items.addAll(FXCollections.observableArrayList(history));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":52}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zyng233"},"content":" private StackPane mainListPanelPlaceholder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"zyng233"},"content":" private CallHistoryPanel callHistoryPanel;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"zyng233"},"content":" callHistoryPanel \u003d new CallHistoryPanel();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"zyng233"},"content":" String personName \u003d commandResult.getPersonName();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"zyng233"},"content":" if (commandResult.getFeedbackToUser().contains(String.format(MESSAGE_SHOW_HISTORY_SUCCESS, personName))) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"zyng233"},"content":" updateCallHistory();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"zyng233"},"content":" } else {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"zyng233"},"content":" updatePersonListPanel();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"zyng233"},"content":" private void updateCallHistory() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"zyng233"},"content":" if (callHistoryPanel.getRoot().getParent() !\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().remove(callHistoryPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"zyng233"},"content":" callHistoryPanel.initializeCallHistory(logic.getCallHistory());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().remove(personListPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().add(callHistoryPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"zyng233"},"content":" private void updatePersonListPanel() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"zyng233"},"content":" if (callHistoryPanel.getRoot().getParent() !\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().remove(callHistoryPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().remove(personListPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"zyng233":34,"-":194}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" private Label nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" @FXML","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" private Label lastContacted;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" @FXML","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":" private Label callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" @FXML","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" nric.setText(person.getNric().value);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" lastContacted.setText(person.getLastContacted().toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"brendanng7"},"content":" callFrequency.setText(person.getCallFrequency().toString());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":3,"GabrielCWT":3,"brendanng7":3,"-":59}},{"path":"src/main/resources/view/CallHistoryCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":" \u003cLabel fx:id\u003d\"indexLabel\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":" \u003cLabel fx:id\u003d\"contactDateLabel\" styleClass\u003d\"cell_big_label\"/\u003e \u003c!-- Change fx:id to match Java code --\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\"\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"0.5\"\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":" \u003cLabel fx:id\u003d\"contactDate\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":20}},{"path":"src/main/resources/view/CallHistoryPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":" \u003cListView fx:id\u003d\"callHistoryView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":8}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"zyng233"},"content":" \u003cStackPane fx:id\u003d\"mainListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"zyng233":1,"-":59}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"0.5\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":" \u003cLabel fx:id\u003d\"nric\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$nric\" /\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Zenkoh1"},"content":" \u003cLabel styleClass\u003d\"cell_big_label\" text\u003d\" - \" /\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" \u003cLabel fx:id\u003d\"lastContacted\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$lastContacted\" /\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" \u003cLabel fx:id\u003d\"callFrequency\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$callFrequency\" /\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":5,"GabrielCWT":1,"brendanng7":1,"-":33}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NRIC_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"zyng233"},"content":" public void getCallHistory_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"zyng233"},"content":" ContactDateList callHistory \u003d new ContactDateList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"zyng233"},"content":" callHistory.add(new ContactDate(\"2021-01-01\", \"\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":" model.updateDisplayedList(callHistory);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"zyng233"},"content":" assertEquals(callHistory, logic.getCallHistory());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Zenkoh1"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NRIC_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"brendanng7"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":1,"zyng233":10,"brendanng7":3,"-":173}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(Person target, ContactDate notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"GabrielCWT"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"linette-g"},"content":" @Override","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"linette-g"},"content":" public Person getPersonByNric(Nric nric) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"linette-g"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"zyng233"},"content":" public void updateDisplayedList(ContactDateList callHistory) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"zyng233"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"zyng233"},"content":" public ContactDateList getDisplayedCallHistory() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"zyng233"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"zyng233"},"content":" public ContactDateList getCallHistory(Person target) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"zyng233"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"linette-g":6,"GabrielCWT":5,"zyng233":17,"-":204}},{"path":"src/test/java/seedu/address/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false)));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false)));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, true)));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false).hashCode());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, true).hashCode());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"zyng233"},"content":" public void getPersonName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"zyng233"},"content":" // Test case 1: Valid format with a name","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zyng233"},"content":" CommandResult commandResult \u003d new CommandResult(\"User: John Doe\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zyng233"},"content":" assertEquals(\"John Doe\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"zyng233"},"content":" // Test case 2: No colon in feedbackToUser","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"zyng233"},"content":" commandResult \u003d new CommandResult(\"User John Doe\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zyng233"},"content":" assertEquals(\"\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"zyng233"},"content":" // Test case 3: Empty string in feedbackToUser","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"zyng233"},"content":" commandResult \u003d new CommandResult(\"\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"zyng233"},"content":" assertEquals(\"\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"zyng233"},"content":" // Test case 4: Colon but no name after it","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zyng233"},"content":" commandResult \u003d new CommandResult(\"User: \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"zyng233"},"content":" assertEquals(\"\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" // Test case 5: Colon with spaces and name after it","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":" commandResult \u003d new CommandResult(\"User: Jane Doe \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" assertEquals(\"Jane Doe\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09","isFullCredit":false}],"authorContributionMap":{"zyng233":23,"-":63}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" public static final String VALID_NRIC_AMY \u003d \"S3862905J\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" public static final String VALID_NRIC_BOB \u003d \"S3233528D\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" public static final String VALID_NOTES \u003d \"This is a note\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":" public static final String VALID_CALL_FREQUENCY_AMY \u003d \"7\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":" public static final String VALID_CALL_FREQUENCY_BOB \u003d \"5\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" public static final String NRIC_DESC_AMY \u003d \" \" + PREFIX_NRIC + VALID_NRIC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" public static final String NRIC_DESC_BOB \u003d \" \" + PREFIX_NRIC + VALID_NRIC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" public static final String NOTES_DESC \u003d \" \" + PREFIX_NOTES + VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"brendanng7"},"content":" public static final String CALL_FREQUENCY_DESC_AMY \u003d","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"brendanng7"},"content":" \" \" + PREFIX_CALL_FREQUENCY + VALID_CALL_FREQUENCY_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"brendanng7"},"content":" public static final String CALL_FREQUENCY_DESC_BOB \u003d","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"brendanng7"},"content":" \" \" + PREFIX_CALL_FREQUENCY + VALID_CALL_FREQUENCY_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" public static final String INVALID_NRIC_DESC \u003d \" \" + PREFIX_NRIC + \"S1234567A\"; // \u0027A\u0027 is not a valid checksum","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"brendanng7"},"content":" public static final String INVALID_CALL_FREQUENCY_DESC \u003d","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"brendanng7"},"content":" \" \" + PREFIX_CALL_FREQUENCY + \"8\"; // Call frequency must be at most 7 days","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_AMY).withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"brendanng7"},"content":" .withTags(VALID_TAG_FRIEND).withCallFrequency(VALID_CALL_FREQUENCY_AMY).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"brendanng7"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withCallFrequency(VALID_CALL_FREQUENCY_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"brendanng7"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":8,"GabrielCWT":3,"brendanng7":12,"-":124}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"linette-g"},"content":" public void equalsIndexCommandTest() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"linette-g"},"content":" public void equalsNricCommandTest() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteFirstNric \u003d new DeleteCommand(new Nric(VALID_NRIC_AMY));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteSecondNric \u003d new DeleteCommand(new Nric(VALID_NRIC_BOB));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"linette-g"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"linette-g"},"content":" assertTrue(deleteFirstNric.equals(deleteFirstNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"linette-g"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteFirstNricCopy \u003d new DeleteCommand(new Nric(VALID_NRIC_AMY));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"linette-g"},"content":" assertTrue(deleteFirstNric.equals(deleteFirstNricCopy));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"linette-g"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"linette-g"},"content":" assertFalse(deleteFirstNric.equals(1));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"linette-g"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"linette-g"},"content":" assertFalse(deleteFirstNric.equals(null));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"linette-g"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"linette-g"},"content":" assertFalse(deleteFirstNric.equals(deleteSecondNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"linette-g"},"content":" // Test for Index","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteCommandForIndex \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"linette-g"},"content":" String expectedIndexString \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"linette-g"},"content":" + \", targetNric\u003dnull}\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedIndexString, deleteCommandForIndex.toString());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"linette-g"},"content":" // Test for NRIC","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"linette-g"},"content":" Nric targetNric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteCommandWithNric \u003d new DeleteCommand(targetNric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"linette-g"},"content":" String expectedNricString \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003dnull, targetNric\u003d\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"linette-g"},"content":" + targetNric + \"}\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedNricString, deleteCommandWithNric.toString());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"linette-g"},"content":" public void execute_validNric_success() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"linette-g"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getNric());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"linette-g"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"linette-g"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"linette-g"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"linette-g"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"linette-g"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"linette-g"},"content":" public void execute_invalidNric_throwsCommandException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"linette-g"},"content":" Nric unregisteredNric \u003d new Nric(\"S5419807H\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"linette-g"},"content":" DeleteCommand markCommand \u003d new DeleteCommand(unregisteredNric);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"linette-g"},"content":" assertCommandFailure(markCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"linette-g":60,"-":116}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"linette-g"},"content":" public void equalsIndexCommandTest() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"linette-g"},"content":" public void equalsNricCommandTest() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"linette-g"},"content":" final EditCommand standardCommand \u003d new EditCommand(new Nric(VALID_NRIC_AMY), DESC_AMY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"linette-g"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"linette-g"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"linette-g"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(new Nric(VALID_NRIC_AMY), copyDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"linette-g"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"linette-g"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"linette-g"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"linette-g"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"linette-g"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"linette-g"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"linette-g"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"linette-g"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"linette-g"},"content":" assertFalse(standardCommand.equals(new EditCommand(new Nric(VALID_NRIC_BOB), DESC_AMY)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"linette-g"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"linette-g"},"content":" assertFalse(standardCommand.equals(new EditCommand(new Nric(VALID_NRIC_AMY), DESC_BOB)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"linette-g"},"content":" // Test for Index","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"linette-g"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"linette-g"},"content":" EditCommand editCommandForIndex \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"linette-g"},"content":" String expectedIndexString \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"linette-g"},"content":" + \", nric\u003dnull, editPersonDescriptor\u003d\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"linette-g"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedIndexString, editCommandForIndex.toString());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"linette-g"},"content":" // Test for NRIC","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"linette-g"},"content":" Nric nric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"linette-g"},"content":" EditCommand editCommandForNric \u003d new EditCommand(nric, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"linette-g"},"content":" String expectedNricString \u003d EditCommand.class.getCanonicalName() + \"{index\u003dnull, nric\u003d\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"linette-g"},"content":" + nric + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedNricString, editCommandForNric.toString());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"linette-g"},"content":" public void execute_validNric_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"linette-g"},"content":" Person personToEdit \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"linette-g"},"content":" Person editedPerson \u003d new PersonBuilder(personToEdit).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"linette-g"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"linette-g"},"content":" EditCommand editCommand \u003d new EditCommand(personToEdit.getNric(), descriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"linette-g"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"linette-g"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"linette-g"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"linette-g"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"linette-g"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"linette-g"},"content":" public void execute_invalidNric_throwsCommandException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"linette-g"},"content":" Nric unregisteredNric \u003d new Nric(\"S5419807H\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"linette-g"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"linette-g"},"content":" EditCommand editCommand \u003d new EditCommand(unregisteredNric, descriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"linette-g"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"linette-g":68,"-":179}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" //different nric -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{nric\u003d\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" + editPersonDescriptor.getNric().orElse(null) + \", name\u003d\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"brendanng7"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", call frequency\u003d\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"brendanng7"},"content":" + editPersonDescriptor.getCallFrequency().orElse(null) + \"}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":8,"brendanng7":2,"-":68}},{"path":"src/test/java/seedu/address/logic/commands/HistoryCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" * Contains integration tests (interaction with the Model) for {@code HistoryCommand}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":"public class HistoryCommandTest {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":" public void equals() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"zyng233"},"content":" HistoryCommand firstHistoryCommand \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zyng233"},"content":" HistoryCommand secondHistoryCommand \u003d new HistoryCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"zyng233"},"content":" assertTrue(firstHistoryCommand.equals(firstHistoryCommand));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"zyng233"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":" HistoryCommand firstHistoryCommandCopy \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" assertTrue(firstHistoryCommand.equals(firstHistoryCommandCopy));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"zyng233"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zyng233"},"content":" assertFalse(firstHistoryCommand.equals(1));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zyng233"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"zyng233"},"content":" assertFalse(firstHistoryCommand.equals(null));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"zyng233"},"content":" // different command -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"zyng233"},"content":" assertFalse(firstHistoryCommand.equals(secondHistoryCommand));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"zyng233"},"content":" // Test for HistoryCommand for Index","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"zyng233"},"content":" public void equalsIndexCommandTest() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyFirstCommand \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"zyng233"},"content":" HistoryCommand historySecondCommand \u003d new HistoryCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"zyng233"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"zyng233"},"content":" assertTrue(historyFirstCommand.equals(historyFirstCommand));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"zyng233"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyFirstCommandCopy \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"zyng233"},"content":" assertTrue(historyFirstCommand.equals(historyFirstCommandCopy));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zyng233"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstCommand.equals(1));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"zyng233"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstCommand.equals(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zyng233"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstCommand.equals(historySecondCommand));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"zyng233"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zyng233"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"zyng233"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"zyng233"},"content":" assertCommandFailure(historyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"zyng233"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zyng233"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"zyng233"},"content":" assertCommandFailure(historyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":" public void execute_validIndexUnfilteredList_success() throws CommandException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"zyng233"},"content":" Person personToViewHistory \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"zyng233"},"content":" String expectedMessage \u003d String.format(HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"zyng233"},"content":" personToViewHistory.getName());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"zyng233"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"zyng233"},"content":" ContactDateList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"zyng233"},"content":" CommandResult result \u003d historyCommand.execute(model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedCallHistory, model.getDisplayedCallHistory());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"zyng233"},"content":" public void execute_validIndexFilteredList_success() throws CommandException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"zyng233"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"zyng233"},"content":" Person personToViewHistory \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"zyng233"},"content":" String expectedMessage \u003d String.format(HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"zyng233"},"content":" personToViewHistory.getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"zyng233"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"zyng233"},"content":" ContactDateList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"zyng233"},"content":" CommandResult result \u003d historyCommand.execute(model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedCallHistory, model.getDisplayedCallHistory());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"zyng233"},"content":" // Test for HistoryCommand for Nric","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"zyng233"},"content":" public void equalsNricCommandTest() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyFirstNric \u003d new HistoryCommand(new Nric(VALID_NRIC_AMY));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"zyng233"},"content":" HistoryCommand historySecondNric \u003d new HistoryCommand(new Nric(VALID_NRIC_BOB));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"zyng233"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"zyng233"},"content":" assertTrue(historyFirstNric.equals(historyFirstNric));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"zyng233"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyFirstNricCopy \u003d new HistoryCommand(new Nric(VALID_NRIC_AMY));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"zyng233"},"content":" assertTrue(historyFirstNric.equals(historyFirstNricCopy));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"zyng233"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstNric.equals(1));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"zyng233"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstNric.equals(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"zyng233"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstNric.equals(historySecondNric));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"zyng233"},"content":" public void execute_invalidNricFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"zyng233"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(new Nric(VALID_NRIC_BOB));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"zyng233"},"content":" assertCommandFailure(historyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"zyng233"},"content":" public void execute_invalidNricUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(new Nric(VALID_NRIC_BOB));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"zyng233"},"content":" assertCommandFailure(historyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"zyng233"},"content":" public void execute_validNricFilteredList_success() throws CommandException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"zyng233"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"zyng233"},"content":" Person personToViewHistory \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(personToViewHistory.getNric());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"zyng233"},"content":" String expectedMessage \u003d String.format(HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"zyng233"},"content":" personToViewHistory.getName());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"zyng233"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"zyng233"},"content":" ContactDateList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"zyng233"},"content":" CommandResult result \u003d historyCommand.execute(model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedCallHistory, model.getDisplayedCallHistory());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"zyng233"},"content":" public void execute_validNricUnfilteredList_success() throws CommandException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"zyng233"},"content":" Person personToViewHistory \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(personToViewHistory.getNric());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"zyng233"},"content":" String expectedMessage \u003d String.format(HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"zyng233"},"content":" personToViewHistory.getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"zyng233"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"zyng233"},"content":" ContactDateList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"zyng233"},"content":" CommandResult result \u003d historyCommand.execute(model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedCallHistory, model.getDisplayedCallHistory());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"zyng233"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"zyng233"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommandWithIndex \u003d new HistoryCommand(targetIndex);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"zyng233"},"content":" String expected \u003d HistoryCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"zyng233"},"content":" + \", targetNric\u003dnull}\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"zyng233"},"content":" assertEquals(expected, historyCommandWithIndex.toString());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"zyng233"},"content":" Nric targetNric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommandWithNric \u003d new HistoryCommand(targetNric);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"zyng233"},"content":" String expectedNricString \u003d HistoryCommand.class.getCanonicalName() + \"{targetIndex\u003dnull, targetNric\u003d\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"zyng233"},"content":" + targetNric + \"}\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedNricString, historyCommandWithNric.toString());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":219}},{"path":"src/test/java/seedu/address/logic/commands/MarkCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"linette-g"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" * {@code MarkCommand}.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":"public class MarkCommandTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" Person personToMark \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d String.format(MarkCommand.MESSAGE_MARK_PERSON_SUCCESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" Messages.format(personToMark));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" expectedModel.markAsContacted(personToMark, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" assertCommandSuccess(markCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(outOfBoundIndex, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"GabrielCWT"},"content":" assertCommandFailure(markCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"GabrielCWT"},"content":" Person personToMark \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d String.format(MarkCommand.MESSAGE_MARK_PERSON_SUCCESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" Messages.format(personToMark));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" expectedModel.markAsContacted(personToMark, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" assertCommandSuccess(markCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(outOfBoundIndex, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"GabrielCWT"},"content":" assertCommandFailure(markCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"linette-g"},"content":" public void equalsIndexCommandTest() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstCommand \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markSecondCommand \u003d new MarkCommand(INDEX_SECOND_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(markFirstCommand.equals(markFirstCommand));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"GabrielCWT"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstCommandCopy \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(markFirstCommand.equals(markFirstCommandCopy));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"GabrielCWT"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstCommand.equals(1));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"GabrielCWT"},"content":" // different date -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate2 \u003d new ContactDateBuilder().withNotes(\"different note\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstCommandDifferentDate \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate2);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstCommand.equals(markFirstCommandDifferentDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"GabrielCWT"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstCommand.equals(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"GabrielCWT"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstCommand.equals(markSecondCommand));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"linette-g"},"content":" public void equalsNricCommandTest() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstNric \u003d new MarkCommand(new Nric(VALID_NRIC_AMY), validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markSecondNric \u003d new MarkCommand(new Nric(VALID_NRIC_BOB), validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"linette-g"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"linette-g"},"content":" assertTrue(markFirstNric.equals(markFirstNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"linette-g"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstNricCopy \u003d new MarkCommand(new Nric(VALID_NRIC_AMY), validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"linette-g"},"content":" assertTrue(markFirstNric.equals(markFirstNricCopy));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"GabrielCWT"},"content":" // different date -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate2 \u003d new ContactDateBuilder().withNotes(\"different note\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstNricDifferentDate \u003d new MarkCommand(new Nric(VALID_NRIC_AMY), validDate2);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstNric.equals(markFirstNricDifferentDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"linette-g"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"linette-g"},"content":" assertFalse(markFirstNric.equals(1));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"linette-g"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"linette-g"},"content":" assertFalse(markFirstNric.equals(null));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"linette-g"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"linette-g"},"content":" assertFalse(markFirstNric.equals(markSecondNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"GabrielCWT"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"linette-g"},"content":" // Test for Index","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"GabrielCWT"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommandWithIndex \u003d new MarkCommand(targetIndex, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"linette-g"},"content":" String expectedIndexString \u003d MarkCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"linette-g"},"content":" + \", targetNric\u003dnull}\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedIndexString, markCommandWithIndex.toString());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"linette-g"},"content":" // Test for NRIC","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"linette-g"},"content":" Nric targetNric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommandWithNric \u003d new MarkCommand(targetNric, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"linette-g"},"content":" String expectedNricString \u003d MarkCommand.class.getCanonicalName() + \"{targetIndex\u003dnull, targetNric\u003d\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"linette-g"},"content":" + targetNric + \"}\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedNricString, markCommandWithNric.toString());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"linette-g"},"content":" public void execute_validNric_success() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"linette-g"},"content":" Person personToMark \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(personToMark.getNric(), validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"linette-g"},"content":" String expectedMessage \u003d String.format(MarkCommand.MESSAGE_MARK_PERSON_SUCCESS,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"linette-g"},"content":" Messages.format(personToMark));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"linette-g"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"GabrielCWT"},"content":" expectedModel.markAsContacted(personToMark, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"linette-g"},"content":" assertCommandSuccess(markCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"linette-g"},"content":" public void execute_invalidNric_throwsCommandException() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"linette-g"},"content":" Nric unregisteredNric \u003d new Nric(\"S5419807H\");","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(unregisteredNric, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"linette-g"},"content":" assertCommandFailure(markCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"linette-g":53,"GabrielCWT":137}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CALL_FREQUENCY_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_CALL_FREQUENCY_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NRIC_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NRIC_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NRIC_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"brendanng7"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"brendanng7"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" String validExpectedPersonString \u003d NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":" // multiple nrics","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Zenkoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Zenkoh1"},"content":" validExpectedPersonString + NRIC_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"brendanng7"},"content":" + NAME_DESC_AMY + ADDRESS_DESC_AMY + CALL_FREQUENCY_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Zenkoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Zenkoh1"},"content":" PREFIX_NRIC, PREFIX_NAME,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"brendanng7"},"content":" PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE, PREFIX_CALL_FREQUENCY));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Zenkoh1"},"content":" // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, INVALID_NRIC_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Zenkoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Zenkoh1"},"content":" // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NRIC_DESC,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Zenkoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Zenkoh1"},"content":" assertParseSuccess(parser, NRIC_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"brendanng7"},"content":" + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + CALL_FREQUENCY_DESC_AMY,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Zenkoh1"},"content":" // missing nric prefix","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, VALID_NRIC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Zenkoh1"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + VALID_NAME_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"Zenkoh1"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + VALID_PHONE_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"Zenkoh1"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"Zenkoh1"},"content":" + VALID_EMAIL_BOB + ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"Zenkoh1"},"content":" + EMAIL_DESC_BOB + VALID_ADDRESS_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, VALID_NRIC_BOB + VALID_NAME_BOB + VALID_PHONE_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"Zenkoh1"},"content":" + VALID_EMAIL_BOB + VALID_ADDRESS_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"Zenkoh1"},"content":" // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, INVALID_NRIC_DESC + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"brendanng7"},"content":" Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"brendanng7"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"brendanng7"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"brendanng7"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"brendanng7"},"content":" + INVALID_ADDRESS_DESC + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"brendanng7"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"brendanng7"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"brendanng7"},"content":" // invalid call frequency","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"brendanng7"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + VALID_TAG_FRIEND + INVALID_CALL_FREQUENCY_DESC,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"brendanng7"},"content":" CallFrequency.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"brendanng7"},"content":" + INVALID_ADDRESS_DESC + CALL_FREQUENCY_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"brendanng7"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"brendanng7"},"content":" + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":42,"brendanng7":38,"-":163}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOTES_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.HistoryCommand;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"GabrielCWT"},"content":" public void parseCommand_mark() throws Exception {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand command \u003d (MarkCommand) parser.parseCommand(","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"GabrielCWT"},"content":" + \" \" + NOTES_DESC);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(new MarkCommand(INDEX_FIRST_PERSON, validDate), command);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"zyng233"},"content":" public void parseCommand_history() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"zyng233"},"content":" HistoryCommand command \u003d (HistoryCommand) parser.parseCommand(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"zyng233"},"content":" HistoryCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"zyng233"},"content":" assertEquals(new HistoryCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":14,"zyng233":8,"-":101}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" public void parse_validIndex_returnsDeleteCommand() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" public void parse_validNric_returnsDeleteCommand() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"linette-g"},"content":" assertParseSuccess(parser, VALID_NRIC_AMY, new DeleteCommand(new Nric(VALID_NRIC_AMY)));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"linette-g":8,"-":31}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NRIC_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NRIC_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CALL_FREQUENCY_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, \"1 q/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"zyng233"},"content":" // invalid NRIC that fails NRIC validation","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"zyng233"},"content":" assertParseFailure(parser, \"S1234567Z\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"zyng233"},"content":" public void parse_validNric_returnsEditCommand() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"zyng233"},"content":" Nric targetNric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"zyng233"},"content":" String userInput \u003d targetNric + PHONE_DESC_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"zyng233"},"content":" .withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"zyng233"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetNric, descriptor);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"zyng233"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, \"1\" + INVALID_NRIC_DESC, Nric.MESSAGE_CONSTRAINTS); // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Zenkoh1"},"content":" + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Zenkoh1"},"content":" String userInput \u003d targetIndex.getOneBased() + NRIC_DESC_AMY + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"brendanng7"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Zenkoh1"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Zenkoh1"},"content":" .withName(VALID_NAME_AMY).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Zenkoh1"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"brendanng7"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(VALID_CALL_FREQUENCY_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Zenkoh1"},"content":" // nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Zenkoh1"},"content":" String userInput \u003d targetIndex.getOneBased() + NRIC_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Zenkoh1"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_AMY).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Zenkoh1"},"content":" // name","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Zenkoh1"},"content":" userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Zenkoh1"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Zenkoh1"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Zenkoh1"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"brendanng7"},"content":" // call frequency","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"brendanng7"},"content":" userInput \u003d targetIndex.getOneBased() + CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"brendanng7"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withCallFrequency(VALID_CALL_FREQUENCY_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"brendanng7"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"brendanng7"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":22,"zyng233":16,"brendanng7":11,"-":198}},{"path":"src/test/java/seedu/address/logic/parser/HistoryCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.HistoryCommand;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":"public class HistoryCommandParserTest {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":" private HistoryCommandParser parser \u003d new HistoryCommandParser();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" public void parse_validArgs_returnsHistoryCommand() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":" assertParseSuccess(parser, \"1\", new HistoryCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, HistoryCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" public void parse_validNric_returnsHistoryCommand() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" assertParseSuccess(parser, VALID_NRIC_AMY, new HistoryCommand(new Nric(VALID_NRIC_AMY)));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":31}},{"path":"src/test/java/seedu/address/logic/parser/MarkCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOTES_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" * outside of the MarkCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" * same path through the MarkCommand, and therefore we test only one of them.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":"public class MarkCommandParserTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" private MarkCommandParser parser \u003d new MarkCommandParser();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" public void parse_validIndex_returnsMarkCommand() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" assertParseSuccess(parser, \"1\" + NOTES_DESC, new MarkCommand(INDEX_FIRST_PERSON, validDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"linette-g"},"content":" public void parse_validNric_returnsMarkCommand() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" assertParseSuccess(parser, VALID_NRIC_AMY + NOTES_DESC, new MarkCommand(new Nric(VALID_NRIC_AMY), validDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" public void parse_emptyNotes_returnsMarkCommand() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().withNotes(\"\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" assertParseSuccess(parser, \"1\", new MarkCommand(INDEX_FIRST_PERSON, validDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"linette-g":8,"GabrielCWT":43}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":" private static final String INVALID_NRIC \u003d \"S1234567A\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" private static final String VALID_NRIC \u003d \"S0431600B\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" public void parseNric_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseNric((String) null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" public void parseNric_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseNric(INVALID_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Zenkoh1"},"content":" public void parseNric_validValueWithoutWhitespace_returnsNric() throws Exception {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Zenkoh1"},"content":" Nric expectedNric \u003d new Nric(VALID_NRIC);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" assertEquals(expectedNric, ParserUtil.parseNric(VALID_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Zenkoh1"},"content":" public void parseNric_validValueWithWhitespace_returnsTrimmedNric() throws Exception {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":" String nricWithWhitespace \u003d WHITESPACE + VALID_NRIC + WHITESPACE;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" Nric expectedNric \u003d new Nric(VALID_NRIC);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" assertEquals(expectedNric, ParserUtil.parseNric(nricWithWhitespace));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":27,"-":196}},{"path":"src/test/java/seedu/address/model/contactdate/ContactDateListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.model.contactdate;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDateListTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":" public void getLastContacted() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateList \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" // Throws IndexOutOfBoundsException when list is empty","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" try {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.getLastContacted();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(true);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" // test 1","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.add(contactDate);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate, contactDateList.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" // test 2","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" ContactDate newContactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.add(newContactDate);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(newContactDate, contactDateList.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateList \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.markAsContacted(VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(1, contactDateList.size());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate, contactDateList.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted_contactDateProvided() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateList \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.markAsContacted(contactDate);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(1, contactDateList.size());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate, contactDateList.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" public void equals() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateList \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateListCopy \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"zyng233"},"content":" ContactDateList contactDateListCopy2 \u003d new ContactDateList(new ContactDate(\"2021-10-10\", \"\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"zyng233"},"content":" ContactDateList contactDateListCopy3 \u003d new ContactDateList(new ContactDate(\"2021-10-11\", \"\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(contactDateList.equals(contactDateList));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"zyng233"},"content":" // different object, same types, same values -\u003e returns true","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zyng233"},"content":" assertTrue(contactDateList.equals(contactDateListCopy));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"zyng233"},"content":" // different object, same types, different values -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zyng233"},"content":" assertFalse(contactDateListCopy2.equals(contactDateListCopy3));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDateList.equals(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDateList.equals(5.0f));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":68,"zyng233":7}},{"path":"src/test/java/seedu/address/model/contactdate/ContactDateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.model.contactdate;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDateTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(NullPointerException.class, () -\u003e new ContactDate(null, VALID_NOTES));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" public void constructor_invalidContactDate_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" String invalidContactDate \u003d \"\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new ContactDate(invalidContactDate, VALID_NOTES));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" public void isValidContactDate() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" // null tag contact date","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(NullPointerException.class, () -\u003e ContactDate.isValidContactDate(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" // invalid contact date","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(ContactDate.isValidContactDate(\"2020-13-01\"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(ContactDate.isValidContactDate(\"2020-01-32\"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(ContactDate.isValidContactDate(\"\"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" // valid contact date","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(ContactDate.isValidContactDate(\"2020-01-01\"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" public void createCurrentDate() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" LocalDate currentDate \u003d LocalDate.now();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d ContactDate.createCurrentDate(VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate.value, currentDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate.getNotes(), VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"brendanng7"},"content":" public void addCallFrequency_validCallFrequency_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().withDate(\"2020-01-01\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" CallFrequency callFrequency \u003d new CallFrequency(\"7\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":" ContactDate newContactDate \u003d contactDate.add(callFrequency);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" ContactDate targetContactDate \u003d new ContactDateBuilder().withDate(\"2020-01-08\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":" assertEquals(newContactDate, targetContactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":" public void equals() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDateCopy \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(contactDate.equals(contactDateCopy));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"GabrielCWT"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(contactDate.equals(contactDate));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDate.equals(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDate.equals(5.0f));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" // different contact date -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":" ContactDate differentContactDate \u003d new ContactDateBuilder().withDate(\"2020-01-02\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDate.equals(differentContactDate));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" // different notes -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" ContactDate differentNotes \u003d new ContactDateBuilder().withNotes(\"Different notes\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDate.equals(differentNotes));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":77,"brendanng7":7}},{"path":"src/test/java/seedu/address/model/person/CallFrequencyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"brendanng7"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"brendanng7"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"brendanng7"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":"public class CallFrequencyTest {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":" assertThrows(NullPointerException.class, () -\u003e new CallFrequency(null));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"brendanng7"},"content":" public void constructor_invalidCallFrequency_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"brendanng7"},"content":" String invalidCallFrequency \u003d \"8\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new CallFrequency(invalidCallFrequency));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"brendanng7"},"content":" public void isValidCallFrequency() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"brendanng7"},"content":" // null call frequency","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"brendanng7"},"content":" assertThrows(NullPointerException.class, () -\u003e CallFrequency.isValidCallFrequency(null));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"brendanng7"},"content":" // invalid call frequencies","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"brendanng7"},"content":" assertFalse(CallFrequency.isValidCallFrequency(\"\")); // empty string","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"brendanng7"},"content":" assertFalse(CallFrequency.isValidCallFrequency(\"8\")); // empty string","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"brendanng7"},"content":" assertFalse(CallFrequency.isValidCallFrequency(\"0\")); // empty string","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"brendanng7"},"content":" // valid call frequencies which are between 1 and 7 inclusive","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"1\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"2\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"3\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"4\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"5\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"6\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"7\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":" public void equals() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":" CallFrequency callFrequency \u003d new CallFrequency(\"7\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"brendanng7"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":" assertTrue(callFrequency.equals(new CallFrequency(\"7\")));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" assertTrue(callFrequency.equals(callFrequency));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"brendanng7"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"brendanng7"},"content":" assertFalse(callFrequency.equals(null));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"brendanng7"},"content":" assertFalse(callFrequency.equals(5.0f));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":" assertFalse(callFrequency.equals(new CallFrequency(\"5\")));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"brendanng7"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"brendanng7":60}},{"path":"src/test/java/seedu/address/model/person/NricTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Zenkoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Zenkoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Zenkoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Zenkoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":"public class NricTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e new Nric(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Zenkoh1"},"content":" public void constructor_invalidNric_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Zenkoh1"},"content":" String invalidNric \u003d \"\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Nric(invalidNric));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Zenkoh1"},"content":" public void isValidNric() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Zenkoh1"},"content":" // null nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e Nric.isValidNric(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"\")); // empty string","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\" \")); // spaces only","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"232323\")); // just numbers","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"S64065D\")); // only 5 digits","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"S6406542Z\")); // wrong checksum","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"P6406542D\")); // starting with P","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"S6406542232Z\")); // too long","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Zenkoh1"},"content":" // valid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"s6406542d\")); // lowercase alphabets","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"S6406542D\")); // uppercase alphabets","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"T5517825E\")); // starting with T","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"F3895385X\")); // starting with F","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"G8413738W\")); // starting with G","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" public void equals() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" Nric nric \u003d new Nric(\"S6406542D\");","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(nric.equals(new Nric(\"S6406542D\")));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" // same values with different case -\u003e returns true","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(nric.equals(new Nric(\"s6406542d\")));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(nric.equals(nric));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(nric.equals(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(nric.equals(5.0f));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(nric.equals(new Nric(\"S9798929Z\")));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":66}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CALL_FREQUENCY_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" // same nric, all other attributes different -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(VALID_CALL_FREQUENCY_BOB).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" // different nric, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" // nric differs in case, all other attributes same -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NRIC_BOB.toLowerCase()).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":" // nric has trailing spaces, all other attributes same -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Zenkoh1"},"content":" String nricWithTrailingSpaces \u003d VALID_NRIC_BOB + \" \";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Zenkoh1"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nricWithTrailingSpaces).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":" // different nric -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Zenkoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"GabrielCWT"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"GabrielCWT"},"content":" person.markAsContacted(contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"GabrielCWT"},"content":" // 1 contact date added on initialisation and another added by markAsContacted","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(2, person.getContactDates().size());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"GabrielCWT"},"content":" public void getLastContacted() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"GabrielCWT"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(person.getContactDates().getLastContacted(), person.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Zenkoh1"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{nric\u003d\" + ALICE.getNric()","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Zenkoh1"},"content":" + \", name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"brendanng7"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"brendanng7"},"content":" + \", tags\u003d\" + ALICE.getTags() + \", call frequency\u003d\" + ALICE.getCallFrequency() + \"}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":20,"GabrielCWT":17,"brendanng7":5,"-":84}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedContactDateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.storage.JsonAdaptedContactDate.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"public class JsonAdaptedContactDateTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" private static final String INVALID_DATE \u003d \"2024-13-01\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" private static final String VALID_DATE \u003d \"2024-01-01\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_validContactDateDetails_returnsContactDate() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedContactDate jsonContactDate \u003d new JsonAdaptedContactDate(contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate, jsonContactDate.toModelType());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_invalidDate_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedContactDate jsonContactDate \u003d new JsonAdaptedContactDate(INVALID_DATE, VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d ContactDate.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" // assertThrows(IllegalValueException.class, expectedMessage, jsonContactDate::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalValueException.class, expectedMessage, jsonContactDate::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_nullDate_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedContactDate jsonContactDate \u003d new JsonAdaptedContactDate(null, VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"date\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalValueException.class, expectedMessage, jsonContactDate::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_nullNotes_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedContactDate jsonContactDate \u003d new JsonAdaptedContactDate(VALID_DATE, null);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"notes\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalValueException.class, expectedMessage, jsonContactDate::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":46}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Zenkoh1"},"content":" private static final String INVALID_NRIC \u003d \"S1234567A\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" private static final String INVALID_CONTACT_DATE \u003d \"2020-13-01\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" private static final String INVALID_CALL_FREQUENCY \u003d \"0\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" private static final String VALID_NRIC \u003d BENSON.getNric().toString();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" private static final List\u003cJsonAdaptedContactDate\u003e VALID_CONTACT_DATES \u003d BENSON.getContactDates().stream()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" .map(JsonAdaptedContactDate::new)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" private static final String VALID_CALL_FREQUENCY \u003d \"7\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" public void toModelType_invalidNric_throwsIllegalValueException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(INVALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Zenkoh1"},"content":" String expectedMessage \u003d Nric.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" public void toModelType_nullNric_throwsIllegalValueException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, INVALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, INVALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, INVALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"brendanng7"},"content":" INVALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"GabrielCWT"},"content":" VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"brendanng7"},"content":" invalidTags, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_invalidContactDates_throwsIllegalValueException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"GabrielCWT"},"content":" List\u003cJsonAdaptedContactDate\u003e invalidContactDates \u003d new ArrayList\u003c\u003e(VALID_CONTACT_DATES);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"GabrielCWT"},"content":" invalidContactDates.add(new JsonAdaptedContactDate(INVALID_CONTACT_DATE, VALID_NOTES));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"GabrielCWT"},"content":" VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, invalidContactDates, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_emptyContactDates_returnsPerson() throws Exception {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"GabrielCWT"},"content":" List\u003cJsonAdaptedContactDate\u003e emptyContactDates \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"GabrielCWT"},"content":" VALID_ADDRESS,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, emptyContactDates, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"brendanng7"},"content":" public void toModelType_invalidCallFrequency_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"brendanng7"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, INVALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"brendanng7"},"content":" String expectedMessage \u003d CallFrequency.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"brendanng7"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"brendanng7"},"content":" public void toModelType_nullCallFrequency_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"brendanng7"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"brendanng7"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, CallFrequency.class.getSimpleName());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"brendanng7"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":14,"GabrielCWT":31,"brendanng7":32,"-":99}},{"path":"src/test/java/seedu/address/testutil/ContactDateBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":" * A utility class to help with building ContactDate objects.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDateBuilder {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":" public static final String DEFAULT_DATE \u003d null;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":" public static final String DEFAULT_NOTES \u003d \"This is a default note\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":" private String date;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":" private String notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" * Creates a {@code ContactDateBuilder} with the default details.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateBuilder() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" date \u003d DEFAULT_DATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" notes \u003d DEFAULT_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" * Initializes the ContactDateBuilder with the data of {@code contactDateToCopy}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateBuilder(ContactDate contactDateToCopy) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" date \u003d contactDateToCopy.value.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" notes \u003d contactDateToCopy.getNotes();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" * Sets the {@code Date} of the {@code ContactDate} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateBuilder withDate(String date) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" this.date \u003d date;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" * Sets the {@code Notes} of the {@code ContactDate} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateBuilder withNotes(String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" this.notes \u003d notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" * Builds the ContactDate object.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate build() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" if (date \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" return ContactDate.createCurrentDate(notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" return new ContactDate(date, notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":56}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Zenkoh1"},"content":" descriptor.setNric(person.getNric());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" * Sets the {@code Nric} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" public EditPersonDescriptorBuilder withNric(String nric) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" descriptor.setNric(new Nric(nric));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" return this;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"brendanng7"},"content":" * Sets the {@code CallFrequency} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"brendanng7"},"content":" public EditPersonDescriptorBuilder withCallFrequency(String callFrequency) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"brendanng7"},"content":" descriptor.setCallFrequency(new CallFrequency(callFrequency));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"brendanng7"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":9,"brendanng7":10,"-":87}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":" public static final String DEFAULT_NRIC \u003d \"S6253973I\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"brendanng7"},"content":" public static final String DEFAULT_CALL_FREQUENCY \u003d \"7\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":" private Nric nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":" private CallFrequency callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" nric \u003d new Nric(DEFAULT_NRIC);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":" callFrequency \u003d new CallFrequency(DEFAULT_CALL_FREQUENCY);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" nric \u003d personToCopy.getNric();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" callFrequency \u003d personToCopy.getCallFrequency();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" * Sets the {@code Nric} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" public PersonBuilder withNric(String nric) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" this.nric \u003d new Nric(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" return this;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"brendanng7"},"content":" * Sets the {@code CallFrequency} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"brendanng7"},"content":" public PersonBuilder withCallFrequency(String callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"brendanng7"},"content":" this.callFrequency \u003d new CallFrequency(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"brendanng7"},"content":" return this;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"brendanng7"},"content":" return new Person(nric, name, phone, email, address, tags, callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":11,"brendanng7":14,"-":97}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Zenkoh1"},"content":" sb.append(PREFIX_NRIC + person.getNric().value + \" \");","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":" sb.append(PREFIX_CALL_FREQUENCY + person.getCallFrequency().value + \" \");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" descriptor.getNric().ifPresent(nric -\u003e sb.append(PREFIX_NRIC).append(nric.value).append(\" \"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":2,"brendanng7":4,"-":62}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CALL_FREQUENCY_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CALL_FREQUENCY_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" public static final Person ALICE \u003d new PersonBuilder().withNric(\"S5207047C\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Alice Pauline\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zyng233"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" public static final Person BENSON \u003d new PersonBuilder().withNric(\"S0233700B\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Benson Meier\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" public static final Person CARL \u003d new PersonBuilder().withNric(\"S6192793Z\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withNric(\"S0589789J\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" public static final Person ELLE \u003d new PersonBuilder().withNric(\"S5674593I\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" public static final Person FIONA \u003d new PersonBuilder().withNric(\"S1092693I\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withNric(\"S8596794J\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" public static final Person HOON \u003d new PersonBuilder().withNric(\"S5594223D\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" public static final Person IDA \u003d new PersonBuilder().withNric(\"S1751126B\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Zenkoh1"},"content":" public static final Person AMY \u003d new PersonBuilder().withNric(VALID_NRIC_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":" .withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"brendanng7"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(VALID_CALL_FREQUENCY_AMY).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":" public static final Person BOB \u003d new PersonBuilder().withNric(VALID_NRIC_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" .withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(VALID_CALL_FREQUENCY_BOB).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":24,"zyng233":4,"brendanng7":22,"-":54}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-F14b-3/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F14b-3/tp/actions)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-F14b-3/tp/graph/badge.svg?token\u003dSY2FHAQJ4U)](https://codecov.io/gh/AY2425S1-CS2103T-F14b-3/tp)","lastModifiedDate":"2024-09-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"# ContactMate","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"This is CLI friendly contact book called **ContactMate**. It is a desktop app for managing contacts, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"ContactMate is for AAC Volunteers to manage their clients\u0027 contacts and keep track of their interactions with them.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"## Features","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"- Add a contact for a client","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"- Read through a client\u0027s call history along with notes taken during the call","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"- Delete a contact","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"- List clients to call based on a priority system","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"- Mark a client as called","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":"## Acknowledgements","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":17,"-":3}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg).","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"linette-g"},"content":"You can reach us at the email `e0969203[at]u.nus.edu`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"### Zen Koh","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Zenkoh1"},"content":"\u003cimg src\u003d\"images/zenkoh1.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":"[[github](https://github.com/Zenkoh1)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Zenkoh1"},"content":"[[portfolio](team/zenkoh1.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":"* Role: Team Lead","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":"* Responsibilities: Logic","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":"### Linette Goh","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":"\u003cimg src\u003d\"images/linette-g.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":"[[github](http://github.com/linette-g)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":"[[portfolio](team/linette.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":"* Role: Developer","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":"### Brendan Ng","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":"\u003cimg src\u003d\"images/brendanng7.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":"[[github](http://github.com/brendanng7)] [[portfolio](team/brendanng7.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":"* Responsibilities: DevOps","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":"### Ziying","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"zyng233"},"content":"\u003cimg src\u003d\"images/zyng233.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zyng233"},"content":"[[github](http://github.com/zyng233)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zyng233"},"content":"[[portfolio](team/ziying.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":"### Gabriel Chang","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":"\u003cimg src\u003d\"images/gabrielcwt.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":"[[github](http://github.com/gabrielcwt)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":"[[portfolio](team/gabrielcwt.md)]","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":"* Responsibilities: Testing","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"linette-g":6,"Zenkoh1":6,"GabrielCWT":5,"zyng233":4,"brendanng7":4,"-":34}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"GabrielCWT"},"content":"* employee at Active Ageing Centre (AAC)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"GabrielCWT"},"content":"**Value proposition**: Easy way to manage regular checkups. Fast, convenient and reliable way to organise contacts and ensure that everyone is checked up on a regular basis. It solves the problem of having to manually manage all the elderly just to keep up with the government’s (AIC) requirements.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"GabrielCWT"},"content":"Priorities: High (must have) - `****`, Medium (nice to have) - `***`, Low (unlikely to have) - `**`, Super Low (won\u0027t have) - `*`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"| -------- | ------------------------------------------ | ------------------------------ | ---------------------------------------------------------------------- |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"GabrielCWT"},"content":" | `****` | User | Mark elderly as called | I can easily keep track of who has been contacted |","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"GabrielCWT"},"content":" | `****` | New user | list elderly contacts by priority (prioritised by last called date) | I know whom to contact first | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Remove elderly from the call list | Any elderly who has passed away or left the program will no longer be on the list | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"GabrielCWT"},"content":" | `****` | User | Record details of the elderly (NRIC etc.) | I know who I\u0027m calling | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Add new elderly who have joined the Befriending Program | I can keep track of these new elderly and call them regularly | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Expert User | Take notes regarding the call | I can keep track of things which should be followed up on | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Update elderly contact information | I can keep the elderly information up to date | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Search elderly by name | I can find this specific person if they were to call me and I can log it as a call | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Expert User | Generate a monthly report to AIC / excel sheet | show the progress and outcome of the Befriending Program | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"GabrielCWT"},"content":" | `****` | Frequent User | Check if the same elderly has been added multiple times | I don\u0027t call the same person multiple times | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Frequent User | Make changes to the style of my address book | I can be happy when I use the address book :) | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Frequent user | Mark contacted elderly quickly using shortcuts | I can work efficiently to contact the entire list | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Detail-orientated user | Add tags to each elderly | I can keep track of details that are important when taking the call. | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Expert User | Add custom fields | I can add details of elderly which are not currently in the system | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Expert User | Visualise how many and which elderly to be called in a calendar | I can plan accordingly if any elderly needs to switch dates | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Expert User | Filter through certain details added for the elderly | I can keep track of how the elderly are doing easily | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"GabrielCWT"},"content":" | `**` | Frequent User | receive notifications for the contacts that are due in the next hour | I can prioritize and complete the calls on time | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"GabrielCWT"},"content":" | `**` | New User | Receive feedback on the commands I have given if they are incorrect | I can easily correct the errors in the commands given | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | Use my up and down arrow keys to go back and forth between commands | I don\u0027t have to retype the same commands | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"GabrielCWT"},"content":" | `***` | New user | Receive a list of commands that the address book uses | I can familiarise myself with the commands and shortcuts | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | I can undo my actions | I can correct my mistakes | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Expert User | Quickly update the status of multiple elderly contacts | I can efficiently manage my tasks | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"GabrielCWT"},"content":" | `***` | New user | Try out the app with sample data | I can familiarise myself with it without worrying about the data I am playing around with | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Onboarded user | Purge all sample data | The app is ready to be used | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | I can view a history of calls made to an elderly contact | I can track past interactions | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | Change the frequency of calls needed to be made for each elderly | I can track when I need to make calls | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Expert User | Archive elderly contacts who are temporarily not part of the program | Keep my contact list organised | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | Export/Import my data across computers | If I would like to work using separate computers, e.g. a laptop and desktop, I can keep them updated | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Expert User | Set multiple contacts as emergency contacts | I can call their next of kin in the event the elderly do not pick up or needs help | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"GabrielCWT"},"content":" | `***` | Frequent User | Export a specific elderly\u0027s details and history (All information) | So I can share it with another employee | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"GabrielCWT"},"content":" | `*` | Expert user | Be notified by the app when too many elderly calls are scheduled on one day | I will not overwork myself or spend too little time calling each elderly | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"GabrielCWT"},"content":" | `*` | Expert User | I can see a dashboard of my weekly or monthly call stats | I can track my productivity and ensure that I hit my KPI | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"GabrielCWT"},"content":" | `*` | Expert User | Set up automated messages for elderly contacts that are not reachable | I can have an alternative communication method | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"GabrielCWT"},"content":" | `*` | Expert User | Use AI to calculate the priority list for elderly based on their information | The correct eldelry are being prioritised | ","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC01 \\- Mark elderly as called** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"GabrielCWT"},"content":"* Marks elderly’s details to contact book only if input has no errors.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"GabrielCWT"},"content":"1. Staff \u003cu\u003elists elderly contacts by priority (UC02)\u003c/u\u003e. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"GabrielCWT"},"content":"2. Staff calls the elderly at the top of the list. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"GabrielCWT"},"content":"3. Staff marks the elderly as called and takes notes of the call with mark command. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"GabrielCWT"},"content":"4. ContactMate updates the elderly as marked and displays a success message.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"GabrielCWT"},"content":"**Extensions:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"GabrielCWT"},"content":"* 1a. The list is empty. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"GabrielCWT"},"content":" * Use case ends. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"GabrielCWT"},"content":"* 3a. ContactMate detects an invalid INDEX or incorrect command syntax. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"GabrielCWT"},"content":" * 3a1. ContactMate shows an error message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"GabrielCWT"},"content":" * Use case resumes from step 3\\.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC02 \\- List elderly contacts by priority** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"GabrielCWT"},"content":"* List of elderly sorted by priority will be shown.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"GabrielCWT"},"content":"1. Staff inputs list command to view elderly contacts. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"GabrielCWT"},"content":"2. ContactMate updates view to show contacts sorted based on priority (date to be called).","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC03 \\- List individual elderly call history** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"GabrielCWT"},"content":"* Elderly call history will be listed only if the input has no errors.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"GabrielCWT"},"content":"1. Staff \u003cu\u003elists elderly contacts by priority (UC02)\u003c/u\u003e. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"GabrielCWT"},"content":"2. Staff inputs INDEX or NRIC of elderly they want to know the call history of. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"GabrielCWT"},"content":"3. ContactMate updates view to show a list of calls made to a specific elderly ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"-"},"content":"\tUse case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"GabrielCWT"},"content":"**Extensions:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"GabrielCWT"},"content":"* 1a. The list is empty. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"GabrielCWT"},"content":" * Use case ends. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"GabrielCWT"},"content":"* 2a. ContactMate detects an invalid INDEX or NRIC or incorrect command syntax. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"GabrielCWT"},"content":"\t* 2a1. ContactMate shows an error message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 2\\.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC04 \\- Delete elderly from the call list** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"GabrielCWT"},"content":"* Delete elderly from the contact list only if input has no errors.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"GabrielCWT"},"content":"1. Staff \u003cu\u003elists elderly contacts by priority (UC02)\u003c/u\u003e. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"GabrielCWT"},"content":"2. Staff inputs the NRIC or INDEX of elderly they want to delete. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"GabrielCWT"},"content":"3. ContactMate prompts the Staff for confirmation before deletion. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"GabrielCWT"},"content":"4. Staff confirms the deletion. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"GabrielCWT"},"content":"5. ContactMate deletes the elderly and confirms the successful deletion for Staff.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"GabrielCWT"},"content":" Use case ends.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"GabrielCWT"},"content":"**Extensions:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"GabrielCWT"},"content":"* 1a. The list is empty. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"GabrielCWT"},"content":" * Use case ends. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"GabrielCWT"},"content":"* 2a. ContactMate detects an invalid INDEX or invalid NRIC or incorrect command syntax. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"GabrielCWT"},"content":"\t* 2a1. ContactMate shows an error message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 2\\. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"GabrielCWT"},"content":"* 3a. Staff cancels the deletion. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"GabrielCWT"},"content":"\t* 3a1. ContactMate shows a cancellation message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case ends.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"GabrielCWT"},"content":"**System: ContactMate** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"GabrielCWT"},"content":"**Use case: UC05 \\- Add new elderly who have joined the Befriending Program, with appropriate details and fields** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"GabrielCWT"},"content":"**Actor: Staff** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"GabrielCWT"},"content":"**Guarantees:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"GabrielCWT"},"content":"* Adds elderly to contact book only if input has no errors.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"GabrielCWT"},"content":"**MSS:**","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"GabrielCWT"},"content":"1. Staff inputs details for the elderly they want to add to the system. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"GabrielCWT"},"content":"2. ContactMate adds the new elderly and shows the updated list with the newly added elderly.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"GabrielCWT"},"content":" Use case ends.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"GabrielCWT"},"content":"**Extensions:** ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"GabrielCWT"},"content":"* 1a. ContactMate detects an invalid INDEX or invalid NRIC or incorrect command syntax. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"GabrielCWT"},"content":"\t* 1a1. ContactMate shows an error message. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 1\\. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"GabrielCWT"},"content":"* 1b. ContactMate detects that the elderly being added has an NRIC matching someone in the contact book. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"GabrielCWT"},"content":"\t* 1b1. ContactMate shows an error message saying this elderly already exists. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 1\\. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"GabrielCWT"},"content":"* 1c. ContactMate detects that the elderly being added has a matching name, phone number or email with someone in the contact book. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"GabrielCWT"},"content":"\t* 1c1. ContactMate shows a warning message that the elderly added has a matching field. ","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"GabrielCWT"},"content":"\t* Use case resumes from step 2\\.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"GabrielCWT"},"content":"1. A user with above-average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"GabrielCWT"},"content":"2. The product should be a single-user system.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"GabrielCWT"},"content":"3. The product should not rely on a remote server.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"GabrielCWT"},"content":"4. It should accommodate up to 250 elderly without noticeable performance slowdowns during typical usage.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"GabrielCWT"},"content":"5. The product should respond within two seconds.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"GabrielCWT"},"content":"6. The product should work on Windows, Linux and Mac as long as they have `Java 17` installed.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"GabrielCWT"},"content":"* **AAC**: Active Ageing Centre. A recreational centre that supports elderly in the area.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"GabrielCWT"},"content":"* **Befriending** Program: Program which elderly signs up for to receive support from an AAC.","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-25","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":135,"-":361}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"brendanng7"},"content":"title: \"ContactMate\"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":"repository: \"AY2425S1-CS2103T-F14b-3/tp\"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"brendanng7":2,"-":13}},{"path":"docs/_sass/minima/_base.scss","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"html {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" font-size: $base-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Reset some basic elements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"body, h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"p, blockquote, pre, hr,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"dl, dd, ol, ul, figure {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" margin: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" padding: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Basic styling","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"body {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" font: $base-font-weight #{$base-font-size}/#{$base-line-height} $base-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" background-color: $background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" -webkit-text-size-adjust: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" -webkit-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" -moz-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -o-font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" font-feature-settings: \"kern\" 1;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" font-kerning: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" display: flex;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" min-height: 100vh;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" flex-direction: column;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" overflow-wrap: break-word;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Set `margin-bottom` to maintain vertical rhythm","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"p, blockquote, pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"ul, ol, dl, figure,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"%vertical-rhythm {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"hr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" margin-top: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * `main` element","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"main {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" display: block; /* Default value of `display` of `main` element is \u0027inline\u0027 in IE 11. */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Images","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" max-width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" vertical-align: middle;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * Figures","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"figure \u003e img {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"figcaption {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" font-size: $small-font-size;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Lists","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"ul, ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" margin-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"li {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" \u003e ul,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" \u003e ol {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Headings","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"h1, h2, h3, h4, h5, h6 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" font-weight: $base-font-weight;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Links","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"a {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" color: $link-base-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" \u0026:visited {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" color: $link-visited-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" color: $text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .social-media-list \u0026:hover {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" text-decoration: none;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .username {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" text-decoration: underline;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * Blockquotes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"blockquote {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" color: $brand-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" border-left: 4px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @include relative-font-size(1.125);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" font-style: italic;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u003e :last-child {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" margin-bottom: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" i, em {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" font-style: normal;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Code formatting","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"pre,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" font-family: $code-font-family;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" font-size: 0.9375em;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" border: 1px solid $brand-color-light;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" background-color: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" padding: 1px 5px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"pre {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" padding: 8px 12px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" \u003e code {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" border: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" padding-right: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" padding-left: 0;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":".highlight {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" border-radius: 3px;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @extend %vertical-rhythm;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" .highlighter-rouge \u0026 {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" background: $code-background-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" * Wrapper","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":".wrapper {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit}));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" margin-right: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" margin-left: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit / 2;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @extend %clearfix;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" @media screen and (min-width: $on-large) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" max-width: calc(#{$content-width} - (#{$spacing-unit} * 2));","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" padding-right: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" padding-left: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" * Clearfix","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"%clearfix:after {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" content: \"\";","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" display: table;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" clear: both;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" * Icons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":".orange {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" color: #f66a0a;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".grey {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" color: #828282;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" * Tables","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"table {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" margin-bottom: $spacing-unit;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" width: 100%;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" text-align: $table-text-align;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" color: $table-text-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" border-collapse: collapse;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" tr {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" \u0026:nth-child(even) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" background-color: $table-zebra-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" th, td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" padding: ($spacing-unit / 3) ($spacing-unit / 2);","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" th {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" background-color: $table-header-bg-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" border: 1px solid $table-header-border;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" td {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" border: 1px solid $table-border-color;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" @include media-query($on-laptop) {","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" overflow-x: auto;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -webkit-overflow-scrolling: touch;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -ms-overflow-style: -ms-autohiding-scrollbar;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"@media print {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" * Prevents page break from cutting through content when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" body {","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" display: block;","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" * Replaces the top navigation menu with the project name when printing","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":" .site-header .wrapper {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" display: none;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" .site-header {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" text-align: center;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" .site-header:before {","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"brendanng7"},"content":" content: \"ContactMate\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" font-size: 32px;","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2021-01-11","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-01-12","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-01-12","isFullCredit":false}],"authorContributionMap":{"brendanng7":1,"-":294}},{"path":"docs/team/brendanng7.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"brendanng7"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"brendanng7"},"content":"layout: page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"brendanng7"},"content":"title: brendanng7\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"brendanng7"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"brendanng7"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"brendanng7"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"brendanng7"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"brendanng7"},"content":"* **Project management**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"brendanng7"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"brendanng7"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"brendanng7"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"brendanng7"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"brendanng7"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"brendanng7"},"content":" * User Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"brendanng7"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":"* **Community**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":"* **Tools**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"brendanng7"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"brendanng7":46}},{"path":"docs/team/gabrielcwt.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"layout: page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"title: Gabriel Chang\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":"* **Project management**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" * User Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":"* **Community**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":"* **Tools**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" * Uses codecov to check code coverage","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":44}},{"path":"docs/team/linette.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"linette-g"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"linette-g"},"content":"layout: page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"linette-g"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"linette-g"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"linette-g"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"linette-g"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"linette-g"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"linette-g"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"linette-g"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"linette-g"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"linette-g"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"linette-g"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"linette-g"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":"* **Project management**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"linette-g"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" * User Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"linette-g"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"linette-g"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":"* **Community**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"linette-g"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"linette-g"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"linette-g"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":"* **Tools**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"linette-g":46}},{"path":"docs/team/zenkoh1.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Zenkoh1"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Zenkoh1"},"content":"layout: page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Zenkoh1"},"content":"title: John Doe\u0027s Project Portfolio Page","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Zenkoh1"},"content":"---","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Zenkoh1"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Zenkoh1"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Zenkoh1"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Zenkoh1"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Zenkoh1"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Zenkoh1"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Zenkoh1"},"content":"* **Project management**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Zenkoh1"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Zenkoh1"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" * User Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Zenkoh1"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Zenkoh1"},"content":"* **Community**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Zenkoh1"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":"* **Tools**:","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":46}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"zyng233"},"content":" * Returns an unmodifiable view of the call history.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"zyng233"},"content":" ContactDateList getCallHistory();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"zyng233":6,"-":50}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zyng233"},"content":" public ContactDateList getCallHistory() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"zyng233"},"content":" return model.getDisplayedCallHistory();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"zyng233":6,"-":88}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"linette-g"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_NRIC \u003d \"The person nric provided is not within list\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" builder.append(String.format(\"%s - %s\", person.getNric(), person.getName()))","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" .append(\"; Tags: \")","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" .append(person.getCallFrequency())","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" .append(\"; Call Frequency: \");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"linette-g":1,"Zenkoh1":1,"brendanng7":3,"-":49}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" + PREFIX_NRIC + \"NRIC \"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":" + PREFIX_CALL_FREQUENCY + \"CALL FREQUENCY \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":" + PREFIX_NRIC + \"S5087089H \"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" + PREFIX_CALL_FREQUENCY + \"7 \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" public static final String MESSAGE_SUCCESS_WITH_WARNING \u003d \"New person added: %1$s\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" + \"Warning: There is an existing person with the same name, phone number or email.\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" String finalMessage;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" if (model.hasSimilarPerson(toAdd)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" finalMessage \u003d String.format(MESSAGE_SUCCESS_WITH_WARNING, Messages.format(toAdd));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Zenkoh1"},"content":" } else {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" finalMessage \u003d String.format(MESSAGE_SUCCESS, Messages.format(toAdd));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" return new CommandResult(finalMessage);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":13,"brendanng7":4,"-":83}},{"path":"src/main/java/seedu/address/logic/commands/CommandResult.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" * Represents the result of a command execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class CommandResult {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final String feedbackToUser;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** Help information should be shown to the user. */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final boolean showHelp;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /** The application should exit. */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final boolean exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified fields.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser, boolean showHelp, boolean exit) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.feedbackToUser \u003d requireNonNull(feedbackToUser);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.showHelp \u003d showHelp;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" this.exit \u003d exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Constructs a {@code CommandResult} with the specified {@code feedbackToUser},","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and other fields set to their default value.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult(String feedbackToUser) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this(feedbackToUser, false, false);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public String getFeedbackToUser() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return feedbackToUser;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public boolean isShowHelp() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return showHelp;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public boolean isExit() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (!(other instanceof CommandResult)) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" CommandResult otherCommandResult \u003d (CommandResult) other;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return feedbackToUser.equals(otherCommandResult.feedbackToUser)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u0026\u0026 showHelp \u003d\u003d otherCommandResult.showHelp","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u0026\u0026 exit \u003d\u003d otherCommandResult.exit;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return Objects.hash(feedbackToUser, showHelp, exit);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" .add(\"feedbackToUser\", feedbackToUser)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .add(\"showHelp\", showHelp)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"exit\", exit)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" public String getPersonName() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":" String[] parts \u003d feedbackToUser.split(\": \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" return parts.length \u003e 1 ? parts[1].strip() : \"\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"zyng233":4,"-":82}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"linette-g"},"content":" * Deletes a person identified using it\u0027s displayed index or NRIC from the address book.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":" + \"Parameters: INDEX (must be a positive integer) or NRIC (must be government issued)\\n\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 or \" + COMMAND_WORD + \" S6253285H\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" private final Nric targetNric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":" * Creates a DeleteCommand to delete person at the specified {@code Index}.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":" * @param targetIndex The {@code Index} of the person to be deleted.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"linette-g"},"content":" this.targetNric \u003d null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":" * Creates a DeleteCommand to delete person with the specified {@code Nric}.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" * @param targetNric The {@code Nric} of the person to be deleted.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" public DeleteCommand(Nric targetNric) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"linette-g"},"content":" this.targetNric \u003d targetNric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"linette-g"},"content":" this.targetIndex \u003d null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"linette-g"},"content":" Person personToDelete;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"linette-g"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"linette-g"},"content":" personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"linette-g"},"content":" personToDelete \u003d model.getPersonByNric(targetNric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"linette-g"},"content":" if (personToDelete \u003d\u003d null) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"linette-g"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"linette-g"},"content":" return (targetIndex !\u003d null \u0026\u0026 targetIndex.equals(otherDeleteCommand.targetIndex))","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"linette-g"},"content":" || (targetNric !\u003d null \u0026\u0026 targetNric.equals(otherDeleteCommand.targetNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"linette-g"},"content":" .add(\"targetNric\", targetNric)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"linette-g":31,"-":64}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" + \"by the index number used in the displayed person list or NRIC. \"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" + \"Parameters: INDEX (must be a positive integer) or NRIC (must be government issued) \"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" + \"[\" + PREFIX_NRIC + \"NRIC] \"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" + \"[\" + PREFIX_CALL_FREQUENCY + \"CALL FREQUENCY] \"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS_WITH_WARNING \u003d \"Edited Person: %1$s\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" + \"Warning: There is an existing person with the same name, phone number or email.\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"linette-g"},"content":" private final Nric nric;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"linette-g"},"content":" this.nric \u003d null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"linette-g"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"linette-g"},"content":" * @param nric of the person in the filtered person list to edit","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"linette-g"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"linette-g"},"content":" public EditCommand(Nric nric, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"linette-g"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"linette-g"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"linette-g"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"linette-g"},"content":" this.index \u003d null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"linette-g"},"content":" Person personToEdit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"linette-g"},"content":" Person editedPerson;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"linette-g"},"content":" if (index !\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"linette-g"},"content":" personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"linette-g"},"content":" editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"linette-g"},"content":" personToEdit \u003d model.getPersonByNric(nric);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"linette-g"},"content":" if (personToEdit \u003d\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"linette-g"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"linette-g"},"content":" editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Zenkoh1"},"content":" String finalMessage;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Zenkoh1"},"content":" if (model.hasSimilarPerson(editedPerson, personToEdit)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Zenkoh1"},"content":" finalMessage \u003d String.format(MESSAGE_EDIT_PERSON_SUCCESS_WITH_WARNING, Messages.format(editedPerson));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Zenkoh1"},"content":" } else {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Zenkoh1"},"content":" finalMessage \u003d String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Zenkoh1"},"content":" return new CommandResult(finalMessage);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Zenkoh1"},"content":" Nric updatedNric \u003d editPersonDescriptor.getNric().orElse(personToEdit.getNric());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDates \u003d editPersonDescriptor.getContactDates().orElse(personToEdit.getContactDates());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"brendanng7"},"content":" CallFrequency updatedCallFrequency \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"brendanng7"},"content":" editPersonDescriptor.getCallFrequency().orElse(personToEdit.getCallFrequency());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"GabrielCWT"},"content":" return new Person(updatedNric, updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"brendanng7"},"content":" contactDates, updatedCallFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"linette-g"},"content":" return (index !\u003d null \u0026\u0026 index.equals(otherEditCommand.index)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"linette-g"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor))","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"linette-g"},"content":" || (nric !\u003d null \u0026\u0026 nric.equals(otherEditCommand.nric)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"linette-g"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"linette-g"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"Zenkoh1"},"content":" private Nric nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"GabrielCWT"},"content":" private ContactDateList contactDates;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"brendanng7"},"content":" private CallFrequency callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"GabrielCWT"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"Zenkoh1"},"content":" setNric(toCopy.nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"GabrielCWT"},"content":" setContactDates(toCopy.contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"brendanng7"},"content":" setCallFrequency(toCopy.callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"brendanng7"},"content":" return CollectionUtil.isAnyNonNull(nric, name, phone, email, address, tags, callFrequency);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"Zenkoh1"},"content":" public void setNric(Nric nric) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"Zenkoh1"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"Zenkoh1"},"content":" public Optional\u003cNric\u003e getNric() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"Zenkoh1"},"content":" return Optional.ofNullable(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"GabrielCWT"},"content":" public Optional\u003cContactDateList\u003e getContactDates() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"GabrielCWT"},"content":" return Optional.ofNullable(contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"GabrielCWT"},"content":" public void setContactDates(ContactDateList contactDates) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"GabrielCWT"},"content":" this.contactDates \u003d contactDates;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"brendanng7"},"content":" public Optional\u003cCallFrequency\u003e getCallFrequency() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"brendanng7"},"content":" return Optional.ofNullable(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"brendanng7"},"content":" public void setCallFrequency(CallFrequency callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"brendanng7"},"content":" this.callFrequency \u003d callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"Zenkoh1"},"content":" return Objects.equals(nric, otherEditPersonDescriptor.nric)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"Zenkoh1"},"content":" \u0026\u0026 Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"brendanng7"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"brendanng7"},"content":" \u0026\u0026 Objects.equals(callFrequency, otherEditPersonDescriptor.callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"Zenkoh1"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"brendanng7"},"content":" .add(\"call frequency\", callFrequency)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"linette-g":34,"Zenkoh1":28,"GabrielCWT":15,"brendanng7":20,"-":231}},{"path":"src/main/java/seedu/address/logic/commands/HistoryCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import java.util.List;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" * Finds and lists the call history of the elderly in address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":"public class HistoryCommand extends Command {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":" public static final String COMMAND_WORD \u003d \"history\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" + \": List call history of the person identified by the index number or NRIC in the displayed person list.\\n\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" + \"Parameters: INDEX (must be a positive integer) or NRIC (must be government issued)\\n\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 or \" + COMMAND_WORD + \" S6253285H\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" public static final String MESSAGE_SHOW_HISTORY_SUCCESS \u003d \"Call history of person: %1$s\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" private final Nric targetNric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":" * Creates a HistoryCommand to find the call history of the person at the specified {@code Index}","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":" *","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"zyng233"},"content":" * @param targetIndex The {@code Index} of the person to be found.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"zyng233"},"content":" public HistoryCommand(Index targetIndex) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"zyng233"},"content":" this.targetNric \u003d null;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" * Creates a HistoryCommand to find the call history of the person with the specified {@code Nric}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"zyng233"},"content":" *","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"zyng233"},"content":" * @param targetNric The {@code Nric} of the person to be found.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zyng233"},"content":" public HistoryCommand(Nric targetNric) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zyng233"},"content":" this.targetNric \u003d targetNric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"zyng233"},"content":" this.targetIndex \u003d null;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"zyng233"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"zyng233"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"zyng233"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"zyng233"},"content":" Person personFound;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"zyng233"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"zyng233"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"zyng233"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"zyng233"},"content":" personFound \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"zyng233"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"zyng233"},"content":" personFound \u003d model.getPersonByNric(targetNric);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zyng233"},"content":" if (personFound \u003d\u003d null) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"zyng233"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"zyng233"},"content":" ContactDateList callHistory \u003d model.getCallHistory(personFound);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"zyng233"},"content":" model.updateDisplayedList(callHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zyng233"},"content":" return new CommandResult(String.format(MESSAGE_SHOW_HISTORY_SUCCESS, personFound.getName()));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zyng233"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"zyng233"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zyng233"},"content":" return true;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":" if (!(other instanceof HistoryCommand)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" return false;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"zyng233"},"content":" HistoryCommand otherHistoryCommand \u003d (HistoryCommand) other;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"zyng233"},"content":" return (targetIndex !\u003d null \u0026\u0026 targetIndex.equals(otherHistoryCommand.targetIndex))","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"zyng233"},"content":" || (targetNric !\u003d null \u0026\u0026 targetNric.equals(otherHistoryCommand.targetNric));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zyng233"},"content":" public String toString() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"zyng233"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"zyng233"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"zyng233"},"content":" .add(\"targetNric\", targetNric)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"zyng233"},"content":" .toString();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":99}},{"path":"src/main/java/seedu/address/logic/commands/MarkCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import java.util.List;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" * Marks a person as contacted.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"linette-g"},"content":" * Identified using it\u0027s displayed index or NRIC from the address book.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"public class MarkCommand extends Command {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" public static final String COMMAND_WORD \u003d \"mark\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" + \": Marks the person identified by the index number used in the displayed person list as contacted.\\n\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":" + \"Parameters: INDEX (must be a positive integer) or NRIC (must be government issued)\\n\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 or \" + COMMAND_WORD + \" S6253285H\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" public static final String MESSAGE_MARK_PERSON_SUCCESS \u003d \"Marked Person: %1$s\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" private final Index targetIndex;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" private final Nric targetNric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" private final ContactDate contactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" * Creates a MarkCommand to mark person at the specified {@code Index} as called.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" * @param targetIndex The {@code Index} of the person to be marked.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" public MarkCommand(Index targetIndex, ContactDate contactDate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" this.targetNric \u003d null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" this.contactDate \u003d contactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":" * Creates a MarkCommand to mark person with the specified {@code Nric} as called.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"linette-g"},"content":" * @param targetNric The {@code Nric} of the person to be marked.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" public MarkCommand(Nric targetNric, ContactDate contactDate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"linette-g"},"content":" this.targetNric \u003d targetNric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"linette-g"},"content":" this.targetIndex \u003d null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" this.contactDate \u003d contactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"GabrielCWT"},"content":" requireNonNull(model);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"linette-g"},"content":" Person personToMark;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"linette-g"},"content":" if (targetIndex !\u003d null) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"GabrielCWT"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"linette-g"},"content":" personToMark \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"linette-g"},"content":" personToMark \u003d model.getPersonByNric(targetNric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"linette-g"},"content":" if (personToMark \u003d\u003d null) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"linette-g"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" model.markAsContacted(personToMark, contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":" return new CommandResult(String.format(MESSAGE_MARK_PERSON_SUCCESS, Messages.format(personToMark)));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":" if (!(other instanceof MarkCommand)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand otherMarkCommand \u003d (MarkCommand) other;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"GabrielCWT"},"content":" return ((targetIndex !\u003d null \u0026\u0026 targetIndex.equals(otherMarkCommand.targetIndex))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"GabrielCWT"},"content":" || (targetNric !\u003d null \u0026\u0026 targetNric.equals(otherMarkCommand.targetNric)))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"GabrielCWT"},"content":" \u0026\u0026 contactDate.equals(otherMarkCommand.contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"GabrielCWT"},"content":" public String toString() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"GabrielCWT"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"linette-g"},"content":" .add(\"targetNric\", targetNric)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":" .toString();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"linette-g":30,"GabrielCWT":71}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NRIC, PREFIX_NAME,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":" PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" PREFIX_CALL_FREQUENCY, PREFIX_TAG);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NRIC, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" PREFIX_EMAIL, PREFIX_CALL_FREQUENCY)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NRIC, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" PREFIX_ADDRESS, PREFIX_CALL_FREQUENCY);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" Nric nric \u003d ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" CallFrequency callFrequency \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":" ParserUtil.parseCallFrequency(argMultimap.getValue(PREFIX_CALL_FREQUENCY).get());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" Person person \u003d new Person(nric, name, phone, email, address, tagList, callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":2,"brendanng7":13,"-":57}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.HistoryCommand;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" case MarkCommand.COMMAND_WORD:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" return new MarkCommandParser().parse(arguments);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" case HistoryCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"zyng233"},"content":" return new HistoryCommandParser().parse(arguments);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":4,"zyng233":4,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":" public static final Prefix PREFIX_NRIC \u003d new Prefix(\"i/\");","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"content":" public static final Prefix PREFIX_CALL_FREQUENCY \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" public static final Prefix PREFIX_NOTES \u003d new Prefix(\"o/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":1,"GabrielCWT":1,"brendanng7":1,"-":14}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"linette-g"},"content":" if (ParserUtil.isParsingIndex(args)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new DeleteCommand(index);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"linette-g"},"content":" } else if (ParserUtil.isParsingNric(args)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"linette-g"},"content":" Nric nric \u003d ParserUtil.parseNric(args);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" return new DeleteCommand(nric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"linette-g":7,"-":25}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NRIC, PREFIX_NAME,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":" PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" PREFIX_CALL_FREQUENCY, PREFIX_TAG);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"linette-g"},"content":" String preamble \u003d argMultimap.getPreamble();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"linette-g"},"content":" Index index \u003d null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" Nric nric \u003d null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"linette-g"},"content":" if (ParserUtil.isParsingIndex(preamble)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"linette-g"},"content":" index \u003d ParserUtil.parseIndex(preamble);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"linette-g"},"content":" } else if (ParserUtil.isParsingNric(preamble)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"linette-g"},"content":" nric \u003d ParserUtil.parseNric(preamble);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"linette-g"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"linette-g"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NRIC, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" PREFIX_ADDRESS, PREFIX_CALL_FREQUENCY);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" if (argMultimap.getValue(PREFIX_NRIC).isPresent()) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" editPersonDescriptor.setNric(ParserUtil.parseNric(argMultimap.getValue(PREFIX_NRIC).get()));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"brendanng7"},"content":" if (argMultimap.getValue(PREFIX_CALL_FREQUENCY).isPresent()) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"brendanng7"},"content":" editPersonDescriptor.setCallFrequency(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"brendanng7"},"content":" ParserUtil.parseCallFrequency(argMultimap.getValue(PREFIX_CALL_FREQUENCY).get()));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"linette-g"},"content":" if (index !\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"linette-g"},"content":" return new EditCommand(nric, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"linette-g":15,"Zenkoh1":5,"brendanng7":9,"-":78}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" // TODO: Implement the logic for searching by NRIC","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":1,"-":33}},{"path":"src/main/java/seedu/address/logic/parser/HistoryCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.HistoryCommand;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":" * Parses input arguments and creates a new HistoryCommand object","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"public class HistoryCommandParser implements Parser\u003cHistoryCommand\u003e {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":" * Parses the given {@code String} of arguments in the context of the HistoryCommand","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" * and returns a HistoryCommand object for execution.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" *","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":" public HistoryCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":" if (ParserUtil.isParsingIndex(args)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" return new HistoryCommand(index);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" } else if (ParserUtil.isParsingNric(args)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":" Nric nric \u003d ParserUtil.parseNric(args);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" return new HistoryCommand(nric);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, HistoryCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":33}},{"path":"src/main/java/seedu/address/logic/parser/MarkCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":" * Parses input arguments and creates a new MarkCommand object","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"public class MarkCommandParser implements Parser\u003cMarkCommand\u003e {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" * Parses the given {@code String} of arguments in the context of the MarkCommand","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" * and returns an MarkCommand object for execution.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" public MarkCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" String preamble \u003d argMultimap.getPreamble();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" String notes \u003d argMultimap.getValue(PREFIX_NOTES).orElse(\"\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d ContactDate.createCurrentDate(notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" if (ParserUtil.isParsingIndex(preamble)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" Index index \u003d ParserUtil.parseIndex(preamble);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" return new MarkCommand(index, contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" } else if (ParserUtil.isParsingNric(preamble)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" Nric nric \u003d ParserUtil.parseNric(preamble);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" return new MarkCommand(nric, contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":" } else {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" throw new ParseException(","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"linette-g":3,"GabrielCWT":36}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" * Parses a {@code String nric} into a {@code Nric}.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" * @throws ParseException if the given {@code nric} is invalid.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" public static Nric parseNric(String nric) throws ParseException {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" String trimmedNric \u003d nric.trim();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" if (!Nric.isValidNric(trimmedNric)) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" throw new ParseException(Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" return new Nric(trimmedNric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"brendanng7"},"content":" * Parses a {@code String callFrequency} into an {@code CallFrequency}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"brendanng7"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"brendanng7"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"brendanng7"},"content":" * @throws ParseException if the given {@code callFrequency} is invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"brendanng7"},"content":" public static CallFrequency parseCallFrequency(String callFrequency) throws ParseException {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"brendanng7"},"content":" requireNonNull(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"brendanng7"},"content":" String trimmedCallFrequency \u003d callFrequency.trim();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"brendanng7"},"content":" if (!CallFrequency.isValidCallFrequency(trimmedCallFrequency)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"brendanng7"},"content":" throw new ParseException(CallFrequency.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"brendanng7"},"content":" return new CallFrequency(trimmedCallFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"linette-g"},"content":" * Checks if the provided argument can be parsed as an {@code Index}.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"linette-g"},"content":" * @param args The string argument to be parsed.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"linette-g"},"content":" * @return {@code true} if the argument can be parsed as an {@code Index}, {@code false} otherwise.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"linette-g"},"content":" public static boolean isParsingIndex(String args) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"linette-g"},"content":" try {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"linette-g"},"content":" ParserUtil.parseIndex(args);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"linette-g"},"content":" return true;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"linette-g"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"linette-g"},"content":" return false;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"linette-g"},"content":" /**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"linette-g"},"content":" * Checks if the provided argument can be parsed as an {@code Nric}.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"linette-g"},"content":" *","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"linette-g"},"content":" * @param args The string argument to be parsed.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"linette-g"},"content":" * @return {@code true} if the argument can be parsed as an {@code Nric}, {@code false} otherwise.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"linette-g"},"content":" */","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"linette-g"},"content":" public static boolean isParsingNric(String args) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"linette-g"},"content":" try {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"linette-g"},"content":" ParserUtil.parseNric(args);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"linette-g"},"content":" return true;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"linette-g"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"linette-g"},"content":" return false;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"linette-g":30,"Zenkoh1":16,"brendanng7":16,"-":124}},{"path":"src/main/java/seedu/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.UniquePersonList;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Duplicates are not allowed (by .isSamePerson comparison)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private final UniquePersonList persons;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" persons \u003d new UniquePersonList();","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Creates an AddressBook using the Persons in the {@code toBeCopied}","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Replaces the contents of the person list with {@code persons}.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.persons.setPersons(persons);","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" setPersons(newData.getPersonList());","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" //// person-level operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return persons.contains(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if a person with a similar identity as {@code person} exists in the address book.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":" * The conditions for similarity are defined in {@code Person::isSimilarPerson}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Zenkoh1"},"content":" * @param person Person to check","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Zenkoh1"},"content":" * @return True if a similar person exists, false otherwise","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Zenkoh1"},"content":" public boolean hasSimilarPerson(Person person) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":" return hasSimilarPerson(person, null);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if a person with a similar identity as {@code person} exists in the address book,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" * excluding one person.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Zenkoh1"},"content":" * The conditions for similarity are defined in {@code Person::isSimilarPerson}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Zenkoh1"},"content":" * @param person Person to check","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Zenkoh1"},"content":" * @param exclude Person to exclude from the check (can be null)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Zenkoh1"},"content":" * @return True if a similar person exists, false otherwise","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Zenkoh1"},"content":" public boolean hasSimilarPerson(Person person, Person exclude) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Zenkoh1"},"content":" requireNonNull(person);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Zenkoh1"},"content":" return persons.containsSimilarPerson(person, exclude);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * The person must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void addPerson(Person p) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" persons.add(p);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" requireNonNull(editedPerson);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" persons.setPerson(target, editedPerson);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void removePerson(Person key) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" persons.remove(key);","lastModifiedDate":"2018-02-28","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"persons\", persons)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" return persons.asUnmodifiableObservableList();","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" return persons.equals(otherAddressBook.persons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" return persons.hashCode();","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":25,"-":130}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if a person with similar identity as {@code person} exists in the address book.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" * The conditions for similarity are defined in {@code Person::isSimilarPerson}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" * @param person Person to check","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" * @return True if a similar person exists, false otherwise","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Zenkoh1"},"content":" boolean hasSimilarPerson(Person person);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if a person with similar identity as {@code person} exists in the address book,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Zenkoh1"},"content":" * possibly excluding one person from the check.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Zenkoh1"},"content":" * The conditions for similarity are defined in {@code Person::isSimilarPerson}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Zenkoh1"},"content":" * @param person Person to check","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":" * @param exclude Person to exclude from the check (can be null)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Zenkoh1"},"content":" * @return True if a similar person exists, false otherwise","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":" boolean hasSimilarPerson(Person person, Person exclude);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"GabrielCWT"},"content":" * Marks the given person as contacted.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"GabrielCWT"},"content":" * The person must exist in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"GabrielCWT"},"content":" void markAsContacted(Person target, ContactDate contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"zyng233"},"content":" * Returns the call history of the given person in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"zyng233"},"content":" * The person must exist in the address book.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"zyng233"},"content":" ContactDateList getCallHistory(Person target);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"zyng233"},"content":" * Updates the displayed list to show the call history of the given person.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"zyng233"},"content":" * The call history must not be empty.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"zyng233"},"content":" void updateDisplayedList(ContactDateList callHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"zyng233"},"content":" * Returns the displayed call history.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"zyng233"},"content":" ContactDateList getDisplayedCallHistory();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"linette-g"},"content":" Person getPersonByNric(Nric nric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"linette-g":2,"Zenkoh1":20,"GabrielCWT":8,"zyng233":18,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" private final ObservableList\u003cString\u003e displayedCallHistory;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" this.displayedCallHistory \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Zenkoh1"},"content":" public boolean hasSimilarPerson(Person person) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Zenkoh1"},"content":" requireNonNull(person);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Zenkoh1"},"content":" return addressBook.hasSimilarPerson(person);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Zenkoh1"},"content":" public boolean hasSimilarPerson(Person person, Person exclude) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Zenkoh1"},"content":" requireAllNonNull(person, exclude);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Zenkoh1"},"content":" return addressBook.hasSimilarPerson(person, exclude);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(Person target, ContactDate contactDate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"GabrielCWT"},"content":" requireNonNull(target);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"GabrielCWT"},"content":" target.markAsContacted(contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"linette-g"},"content":" @Override","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"linette-g"},"content":" public Person getPersonByNric(Nric nric) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"linette-g"},"content":" for (Person person : filteredPersons) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"linette-g"},"content":" if (person.getNric().equals(nric)) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"linette-g"},"content":" return person;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"linette-g"},"content":" return null;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"zyng233"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Call History \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"zyng233"},"content":" public ContactDateList getCallHistory(Person target) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"zyng233"},"content":" requireNonNull(target);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"zyng233"},"content":" return target.getContactDates();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"zyng233"},"content":" public void updateDisplayedList(ContactDateList callHistory) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"zyng233"},"content":" requireNonNull(callHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"zyng233"},"content":" displayedCallHistory.clear();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"zyng233"},"content":" for (ContactDate date : callHistory) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"zyng233"},"content":" displayedCallHistory.add(date.toString());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"zyng233"},"content":" public ContactDateList getDisplayedCallHistory() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"zyng233"},"content":" ContactDateList callHistory \u003d new ContactDateList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"zyng233"},"content":" for (String call : displayedCallHistory) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"zyng233"},"content":" ContactDate contactDate \u003d new ContactDate(call, \"\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"zyng233"},"content":" callHistory.add(contactDate);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"zyng233"},"content":" return callHistory;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"zyng233"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"zyng233"},"content":" \u0026\u0026 displayedCallHistory.equals(otherModelManager.displayedCallHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"linette-g":11,"Zenkoh1":12,"GabrielCWT":6,"zyng233":33,"-":147}},{"path":"src/main/java/seedu/address/model/contactdate/ContactDate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.model.contactdate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":" * Represents a Person\u0027s contacted date in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidContactDate(String)}","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDate {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" \"Dates should be in the format of YYYY-MM-DD\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{4}-\\\\d{2}-\\\\d{2}\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" public final LocalDate value;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" private final String notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" * Constructs a {@code ContactDate}.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" *","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" * @param date A valid date and time.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate(String date, String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" requireNonNull(date);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" requireNonNull(notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" checkArgument(isValidContactDate(date), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" value \u003d LocalDate.parse(date);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" this.notes \u003d notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" * Returns true if a given string is a valid date.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" public static boolean isValidContactDate(String test) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" try {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" if (!test.matches(VALIDATION_REGEX)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" LocalDate.parse(test);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" * Returns the current date.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" public static ContactDate createCurrentDate(String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" return new ContactDate(LocalDate.now().toString(), notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"brendanng7"},"content":" * Returns a new {@code ContactDate} that is a specified number of days after the current date.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" * The number of days is determined by the {@code callFrequency}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"brendanng7"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"brendanng7"},"content":" * @param callFrequency The frequency of calls, represented as a {@code CallFrequency} object,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"brendanng7"},"content":" * which determines how many days to add to the current date.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"brendanng7"},"content":" * @return A new {@code ContactDate} that is {@code callFrequency} days after the current date.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"brendanng7"},"content":" public ContactDate add(CallFrequency callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"brendanng7"},"content":" int daysToAdd \u003d Integer.parseInt(callFrequency.value); // Parse the number of days from callFrequency","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"GabrielCWT"},"content":" return new ContactDate(value.plusDays(daysToAdd).toString(), \"\"); // Create and return a new ContactDate","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":" public String toString() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" return value.toString();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" public String getNotes() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":" return notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"GabrielCWT"},"content":" if (!(other instanceof ContactDate)) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"GabrielCWT"},"content":" ContactDate otherDate \u003d (ContactDate) other;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"GabrielCWT"},"content":" return value.equals(otherDate.value) \u0026\u0026 notes.equals(otherDate.notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"GabrielCWT"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"GabrielCWT"},"content":" return value.hashCode();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":82,"zyng233":2,"brendanng7":15}},{"path":"src/main/java/seedu/address/model/contactdate/ContactDateList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.model.contactdate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":" * Represents a List of ContactDates in the address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDateList extends ArrayList\u003cContactDate\u003e {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateList() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":" super();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" * Creates a ContactDateList with the given ContactDates.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" * @param contactDatesToAdd","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateList(ContactDate ...contactDatesToAdd) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" super();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" for (ContactDate contactDate : contactDatesToAdd) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" this.add(contactDate);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateList(ArrayList\u003cContactDate\u003e contactDates) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" super(contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" * Adds all the ContactDates in the given ContactDateList to this ContactDateList.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" * @param contactDateList","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" public void addAll(ContactDateList contactDateList) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" for (ContactDate contactDate : contactDateList) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" this.add(contactDate);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" * Adds the current date to the ContactDateList.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" this.add(ContactDate.createCurrentDate(notes));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" * Adds the given ContactDate to the ContactDateList.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" * @param contactDate","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(ContactDate contactDate) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" this.add(contactDate);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" * Returns the last ContactDate in the ContactDateList.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":" * @return the most recent ContactDate.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"GabrielCWT"},"content":" * @throws IndexOutOfBoundsException if the list is empty.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate getLastContacted() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" if (this.size() \u003d\u003d 0) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":" throw new IndexOutOfBoundsException(\"No ContactDates in the list.\");","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"GabrielCWT"},"content":" return this.get(this.size() - 1);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"GabrielCWT"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"GabrielCWT"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" return true;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zyng233"},"content":" if (!(other instanceof ContactDateList)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zyng233"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"zyng233"},"content":" ContactDateList that \u003d (ContactDateList) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"zyng233"},"content":" if (this.size() \u003d\u003d that.size()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zyng233"},"content":" for (int i \u003d 0; i \u003c this.size(); i++) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"zyng233"},"content":" if (!this.get(i).equals(that.get(i))) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"zyng233"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"GabrielCWT"},"content":" return false;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":74,"zyng233":14}},{"path":"src/main/java/seedu/address/model/person/CallFrequency.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"brendanng7"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"brendanng7"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":" * Represents a Person\u0027s call frequency in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidCallFrequency(String)}","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":"public class CallFrequency {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":" \"Calling frequency is in days and has to be a positive number less than or equal to 7\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"content":" public static final String VALIDATION_REGEX \u003d \"^[1-7]$\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"brendanng7"},"content":" public final String value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":" * Constructs a {@code CallFrequency}.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"brendanng7"},"content":" *","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"brendanng7"},"content":" * @param callFrequency A valid date.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"brendanng7"},"content":" public CallFrequency(String callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"brendanng7"},"content":" requireNonNull(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"brendanng7"},"content":" checkArgument(isValidCallFrequency(callFrequency), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"brendanng7"},"content":" value \u003d callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"brendanng7"},"content":" * Returns true if a given string is a valid call frequency.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":" public static boolean isValidCallFrequency(String test) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"brendanng7"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":" return value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"brendanng7"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" if (!(other instanceof CallFrequency)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" CallFrequency otherCallFrequency \u003d (CallFrequency) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":" return value.equals(otherCallFrequency.value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"brendanng7"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"brendanng7"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"brendanng7":60}},{"path":"src/main/java/seedu/address/model/person/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Email {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" + \"characters.\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // alphanumeric and special characters","lastModifiedDate":"2018-02-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2021-07-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @param email A valid email address.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Email(String email) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" value \u003d email;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" // Ignore case as emails are case-insensitive","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":" return value.equalsIgnoreCase(otherEmail.value);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":2,"-":78}},{"path":"src/main/java/seedu/address/model/person/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":" // Ignore case as names are case-insensitive","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" return fullName.equalsIgnoreCase(otherName.fullName);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":2,"-":66}},{"path":"src/main/java/seedu/address/model/person/Nric.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Zenkoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Zenkoh1"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Zenkoh1"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Zenkoh1"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":"/**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":" * Represents a Person\u0027s NRIC in the address book.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Zenkoh1"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidNric(String)}","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Zenkoh1"},"content":"public class Nric {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Zenkoh1"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Zenkoh1"},"content":" \"Please ensure that the NRIC is a valid one issued by the Singapore government.\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":" /*","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":" * NRIC should start with S, T, F or G followed by 7 digits and end with a character.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Zenkoh1"},"content":" public static final String VALIDATION_REGEX \u003d \"(?i)^([STFG])(\\\\d{7})([A-Z])$\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":" public final String value;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":" * Constructs a {@code Nric}.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" * @param nric A valid NRIC.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" public Nric(String nric) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" requireNonNull(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Zenkoh1"},"content":" checkArgument(isValidNric(nric), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":" value \u003d nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if a given string is a valid nric.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" public static boolean isValidNric(String test) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" Pattern r \u003d Pattern.compile(VALIDATION_REGEX);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":" Matcher m \u003d r.matcher(test);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" if (m.find()) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" return isValidCheckSum(m.group(1), m.group(2), m.group(3));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" } else {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" return false;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if the checksum of the NRIC is valid.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" * Checksum as used by the Singapore government to validate NRIC numbers.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":" * Any magic numbers or characters used in the method are based on the checksum algorithm.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Zenkoh1"},"content":" * @param firstChar The first character of the NRIC number.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" * @param middleDigits The middle 7 digits of the NRIC number.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":" * @param lastChar The last character of the NRIC number, the checksum.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":" * @return true if the checksum is valid, false otherwise.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" private static boolean isValidCheckSum(String firstChar, String middleDigits, String lastChar) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" // Weights for each digit in the NRIC number (in order).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" int[] weights \u003d {2, 7, 6, 5, 4, 3, 2};","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" int sum \u003d 0;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" // Multiply each digit in the NRIC number by its weight i.e. 2 7 6 5 4 3 2 in order.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" for (int i \u003d 0; i \u003c middleDigits.length(); i++) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" sum +\u003d Integer.parseInt(middleDigits.substring(i, i + 1)) * weights[i];","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" // If the first letter of the NRIC starts with T or G, add 4 to the total.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":" if (firstChar.equalsIgnoreCase(\"T\") || firstChar.equalsIgnoreCase(\"G\")) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Zenkoh1"},"content":" sum +\u003d 4;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" // Find the remainder of (sum calculated above) mod 11","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Zenkoh1"},"content":" int remainder \u003d sum % 11;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":" if (firstChar.equalsIgnoreCase(\"S\") || firstChar.equalsIgnoreCase(\"T\")) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Zenkoh1"},"content":" String[] remainderToCheckSumArr \u003d {\"J\", \"Z\", \"I\", \"H\", \"G\", \"F\", \"E\", \"D\", \"C\", \"B\", \"A\"};","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Zenkoh1"},"content":" return lastChar.equalsIgnoreCase(remainderToCheckSumArr[remainder]);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":" } else if (firstChar.equalsIgnoreCase(\"F\") || firstChar.equalsIgnoreCase(\"G\")) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" String[] remainderToCheckSumArr \u003d {\"X\", \"W\", \"U\", \"T\", \"R\", \"Q\", \"P\", \"N\", \"M\", \"L\", \"K\"};","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" return lastChar.equalsIgnoreCase(remainderToCheckSumArr[remainder]);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Zenkoh1"},"content":" } else {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":" // Should never reach here as the first character of the NRIC should be S, T, F or G,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Zenkoh1"},"content":" // and this is already checked in the isValidNric method.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Zenkoh1"},"content":" assert false : \"Invalid first character of NRIC\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Zenkoh1"},"content":" return false;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Zenkoh1"},"content":" public String toString() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Zenkoh1"},"content":" return value;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Zenkoh1"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Zenkoh1"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Zenkoh1"},"content":" return true;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Zenkoh1"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Zenkoh1"},"content":" if (!(other instanceof Nric)) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Zenkoh1"},"content":" return false;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Zenkoh1"},"content":" Nric otherNric \u003d (Nric) other;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Zenkoh1"},"content":" // Ignore case as NRIC is case-insensitive","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Zenkoh1"},"content":" return value.equalsIgnoreCase(otherNric.value);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Zenkoh1"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Zenkoh1"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Zenkoh1"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":118}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Zenkoh1"},"content":" private final Nric nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" private final ContactDateList contactDates \u003d new ContactDateList();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" private final CallFrequency callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" public Person(Nric nric, Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" ContactDateList contactDates, CallFrequency callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":" requireAllNonNull(nric, name, phone, email, address, tags, contactDates, callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" this.contactDates.addAll(contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":" this.callFrequency \u003d callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" * For creating a new person. Every field but contact date must be present and not null.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" public Person(Nric nric, Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":" CallFrequency callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" this(nric, name, phone, email, address, tags, new ContactDateList(ContactDate.createCurrentDate(\"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" callFrequency);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":" public Nric getNric() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":" return nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateList getContactDates() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" return contactDates;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate getLastContacted() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" return contactDates.getLastContacted();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"brendanng7"},"content":" public CallFrequency getCallFrequency() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"brendanng7"},"content":" return callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"brendanng7"},"content":" public ContactDate getNextContactDate() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"brendanng7"},"content":" return getLastContacted().add(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"GabrielCWT"},"content":" * Mark the person as contacted today.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(ContactDate contactDate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"GabrielCWT"},"content":" contactDates.markAsContacted(contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if both persons have the same nric.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Zenkoh1"},"content":" \u0026\u0026 otherPerson.getNric().equals(getNric());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if both persons are the same as defined in {@code isSamePerson(Person otherPerson)}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Zenkoh1"},"content":" * or if their name, phone number or email are the same.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Zenkoh1"},"content":" * This defines the weakest notion of equality between two persons.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Zenkoh1"},"content":" *","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Zenkoh1"},"content":" * @param otherPerson The other person to compare with.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Zenkoh1"},"content":" * @return True if the persons are similar, false otherwise.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Zenkoh1"},"content":" public boolean isSimilarPerson(Person otherPerson) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Zenkoh1"},"content":" if (isSamePerson(otherPerson)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Zenkoh1"},"content":" return true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Zenkoh1"},"content":" if (otherPerson \u003d\u003d null) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Zenkoh1"},"content":" return false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Zenkoh1"},"content":" return otherPerson.getName().equals(getName())","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Zenkoh1"},"content":" || otherPerson.getPhone().equals(getPhone())","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Zenkoh1"},"content":" || otherPerson.getEmail().equals(getEmail());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Zenkoh1"},"content":" return nric.equals(otherPerson.nric)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Zenkoh1"},"content":" \u0026\u0026 name.equals(otherPerson.name)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"brendanng7"},"content":" return Objects.hash(nric, name, phone, email, address, tags, callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"Zenkoh1"},"content":" .add(\"nric\", nric)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"brendanng7"},"content":" .add(\"call frequency\", callFrequency)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":30,"GabrielCWT":27,"brendanng7":15,"-":116}},{"path":"src/main/java/seedu/address/model/person/UniquePersonList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Iterator;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.PersonNotFoundException;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A list of persons that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A person is considered unique by comparing using {@code Person#isSamePerson(Person)}. As such, adding and updating of","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * persons uses Person#isSamePerson(Person) for equality so as to ensure that the person being added or updated is","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * unique in terms of identity in the UniquePersonList. However, the removal of a person uses Person#equals(Object) so","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * as to ensure that the person with exactly the same fields will be removed.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @see Person#isSamePerson(Person)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class UniquePersonList implements Iterable\u003cPerson\u003e {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns true if the list contains an equivalent person as the given argument.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public boolean contains(Person toCheck) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" return internalList.stream().anyMatch(toCheck::isSamePerson);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" * Returns true if the list contains a similar person as the given argument, possibly excluding one person from","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" * the check.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":" public boolean containsSimilarPerson(Person toCheck, Person exclude) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" return internalList.filtered(person -\u003e !person.equals(exclude))","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" .stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" .anyMatch(toCheck::isSimilarPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Adds a person to the list.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * The person must not already exist in the list.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void add(Person toAdd) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" internalList.add(toAdd);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Replaces the person {@code target} in the list with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the list.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!target.isSamePerson(editedPerson) \u0026\u0026 contains(editedPerson)) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" internalList.set(index, editedPerson);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Removes the equivalent person from the list.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * The person must exist in the list.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void remove(Person toRemove) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2018-02-28","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new PersonNotFoundException();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setPersons(UniquePersonList replacement) {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" requireNonNull(replacement);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Replaces the contents of this list with {@code persons}.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void setPersons(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" requireAllNonNull(persons);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (!personsAreUnique(persons)) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new DuplicatePersonException();","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" internalList.setAll(persons);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public Iterator\u003cPerson\u003e iterator() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" return internalList.iterator();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (!(other instanceof UniquePersonList)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" UniquePersonList otherUniquePersonList \u003d (UniquePersonList) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return internalList.equals(otherUniquePersonList.internalList);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" return internalList.hashCode();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" return internalList.toString();","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * Returns true if {@code persons} contains only unique persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" private boolean personsAreUnique(List\u003cPerson\u003e persons) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c persons.size() - 1; i++) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" for (int j \u003d i + 1; j \u003c persons.size(); j++) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" if (persons.get(i).isSamePerson(persons.get(j))) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":11,"-":150}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S7083906G\"), new Name(\"Alex Yeoh\"), new Phone(\"87438807\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"alexyeoh@example.com\"), new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"friends\"), new ContactDateList(new ContactDate(\"2024-09-26\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"5\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S0964515B\"), new Name(\"Bernice Yu\"), new Phone(\"99272758\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"berniceyu@example.com\"), new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"colleagues\", \"friends\"), new ContactDateList(new ContactDate(\"2024-09-28\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"6\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S7419603I\"), new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"charlotte@example.com\"), new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"neighbours\"), new ContactDateList(new ContactDate(\"2024-09-27\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"7\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S9496815A\"), new Name(\"David Li\"), new Phone(\"91031282\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"lidavid@example.com\"), new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"family\"), new ContactDateList(new ContactDate(\"2024-09-27\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"6\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S8388963B\"), new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"irfan@example.com\"), new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"classmates\"), new ContactDateList(new ContactDate(\"2024-09-28\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"5\")),","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" new Person(new Nric(\"S7495552E\"), new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" new Email(\"royb@example.com\"), new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" getTagSet(\"colleagues\"), new ContactDateList(new ContactDate(\"2024-09-26\", \"\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" new CallFrequency(\"3\"))","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":13,"GabrielCWT":8,"brendanng7":7,"-":42}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedContactDate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":" * Jackson-friendly version of {@link ContactDate}.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"public class JsonAdaptedContactDate {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"ContactDate\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" private final String date;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" private final String notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" * Constructs a {@code JsonAdaptedContactDate} with the given {@code contactDate}.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" @JsonCreator","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" public JsonAdaptedContactDate(@JsonProperty(\"date\") String date, @JsonProperty(\"notes\") String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" this.date \u003d date;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" this.notes \u003d notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" * Converts a given {@code ContactDate} into this class for Jackson use.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" public JsonAdaptedContactDate(ContactDate source) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" date \u003d source.value.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" notes \u003d source.getNotes();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" * Converts this Jackson-friendly adapted contact date object into the model\u0027s {@code ContactDate} object.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted contact date.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate toModelType() throws IllegalValueException {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" if (date \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"date\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" if (!ContactDate.isValidContactDate(date)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" throw new IllegalValueException(ContactDate.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" if (notes \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"notes\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" return new ContactDate(date, notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":50}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" private final String nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" private final List\u003cJsonAdaptedContactDate\u003e contactDates \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" private final String callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" public JsonAdaptedPerson(@JsonProperty(\"nric\") String nric, @JsonProperty(\"name\") String name,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" @JsonProperty(\"phone\") String phone, @JsonProperty(\"email\") String email,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" @JsonProperty(\"address\") String address,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" @JsonProperty(\"contactDates\") List\u003cJsonAdaptedContactDate\u003e contactDates,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":" @JsonProperty(\"callFrequency\") String callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" this.nric \u003d nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":" this.callFrequency \u003d callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":" if (contactDates !\u003d null) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"GabrielCWT"},"content":" this.contactDates.addAll(contactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" nric \u003d source.getNric().value;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"brendanng7"},"content":" callFrequency \u003d source.getCallFrequency().value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":" contactDates.addAll(source.getContactDates().stream()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" .map(JsonAdaptedContactDate::new)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"GabrielCWT"},"content":" final ArrayList\u003cContactDate\u003e personContactDates \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"GabrielCWT"},"content":" if (contactDates.isEmpty()) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"GabrielCWT"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList.class.getSimpleName()));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":" for (JsonAdaptedContactDate contactDate : contactDates) {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"GabrielCWT"},"content":" personContactDates.add(contactDate.toModelType());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Zenkoh1"},"content":" if (nric \u003d\u003d null) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Zenkoh1"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName()));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Zenkoh1"},"content":" if (!Nric.isValidNric(nric)) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Zenkoh1"},"content":" throw new IllegalValueException(Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Zenkoh1"},"content":" final Nric modelNric \u003d new Nric(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"brendanng7"},"content":" if (callFrequency \u003d\u003d null) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"brendanng7"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"brendanng7"},"content":" CallFrequency.class.getSimpleName()));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"brendanng7"},"content":" if (!CallFrequency.isValidCallFrequency(callFrequency)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"brendanng7"},"content":" throw new IllegalValueException(CallFrequency.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"brendanng7"},"content":" final CallFrequency modelCallFrequency \u003d new CallFrequency(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"GabrielCWT"},"content":" final ContactDateList modelContactDates \u003d new ContactDateList(personContactDates);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"brendanng7"},"content":" return new Person(modelNric, modelName, modelPhone, modelEmail, modelAddress, modelTags,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"brendanng7"},"content":" modelContactDates, modelCallFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":13,"GabrielCWT":21,"brendanng7":18,"-":105}},{"path":"src/main/java/seedu/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Zenkoh1"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"Persons list contains duplicate person(s).\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":" public static final String MESSAGE_SIMILAR_PERSON \u003d \"\"\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" %s","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":" has the same name, phone number or email as someone else in the list.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Zenkoh1"},"content":" Double check to ensure that this is not a duplicate.\"\"\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonSerializableAddressBook.class);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedPerson\u003e persons \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given persons.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"persons\") List\u003cJsonAdaptedPerson\u003e persons) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.persons.addAll(persons);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" persons.addAll(source.getPersonList().stream().map(JsonAdaptedPerson::new).collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" for (JsonAdaptedPerson jsonAdaptedPerson : persons) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person person \u003d jsonAdaptedPerson.toModelType();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (addressBook.hasPerson(person)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" if (addressBook.hasSimilarPerson(person)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" logger.info(String.format(MESSAGE_SIMILAR_PERSON, person));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":13,"-":60}},{"path":"src/main/java/seedu/address/ui/CallHistoryCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":" * An UI component that displays information of a {@code CallHistory}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"public class CallHistoryCard extends UiPart\u003cHBox\u003e {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":" private static final String FXML \u003d \"CallHistoryCard.fxml\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":" @FXML","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":" private Label indexLabel;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":" @FXML","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" private Label contactDateLabel;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":" * Creates a {@code CallHistoryCard} with the given {@code CallHistory} and index to display.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":" public CallHistoryCard(ContactDate contactDate, int index) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" super(FXML);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" indexLabel.setText(index + \". \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" contactDateLabel.setText(contactDate.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":28}},{"path":"src/main/java/seedu/address/ui/CallHistoryPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"import javafx.scene.layout.VBox;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":" * Panel containing the list of call history.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":"public class CallHistoryPanel extends UiPart\u003cVBox\u003e {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":" private static final String FXML \u003d \"CallHistoryPanel.fxml\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" @FXML","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":" private ListView\u003cContactDate\u003e callHistoryView;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":" private ObservableList\u003cContactDate\u003e items;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" * Creates a {@code CallHistoryPanel}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" public CallHistoryPanel() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":" super(FXML);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" items \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" callHistoryView.setItems(items);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" callHistoryView.setCellFactory(param -\u003e new ListCell\u003c\u003e() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":" protected void updateItem(ContactDate contactDate, boolean empty) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":" super.updateItem(contactDate, empty);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":" if (empty || contactDate \u003d\u003d null) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"zyng233"},"content":" setGraphic(null);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zyng233"},"content":" setText(null);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"zyng233"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":" int index \u003d getIndex() + 1;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"zyng233"},"content":" CallHistoryCard card \u003d new CallHistoryCard(contactDate, index);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"zyng233"},"content":" setGraphic(card.getRoot());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" });","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zyng233"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zyng233"},"content":" * Initializes the call history panel with the given {@code ContactDateList}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"zyng233"},"content":" public void initializeCallHistory(ContactDateList history) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zyng233"},"content":" items.clear();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"zyng233"},"content":" items.addAll(FXCollections.observableArrayList(history));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":52}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zyng233"},"content":" private StackPane mainListPanelPlaceholder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"zyng233"},"content":" private CallHistoryPanel callHistoryPanel;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" personListPanel \u003d new PersonListPanel(logic.getFilteredPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"zyng233"},"content":" callHistoryPanel \u003d new CallHistoryPanel();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"zyng233"},"content":" String personName \u003d commandResult.getPersonName();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"zyng233"},"content":" if (commandResult.getFeedbackToUser().contains(String.format(MESSAGE_SHOW_HISTORY_SUCCESS, personName))) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"zyng233"},"content":" updateCallHistory();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"zyng233"},"content":" } else {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"zyng233"},"content":" updatePersonListPanel();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"zyng233"},"content":" private void updateCallHistory() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"zyng233"},"content":" if (callHistoryPanel.getRoot().getParent() !\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().remove(callHistoryPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"zyng233"},"content":" callHistoryPanel.initializeCallHistory(logic.getCallHistory());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().remove(personListPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().add(callHistoryPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"zyng233"},"content":" private void updatePersonListPanel() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"zyng233"},"content":" if (callHistoryPanel.getRoot().getParent() !\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().remove(callHistoryPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().remove(personListPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"zyng233"},"content":" mainListPanelPlaceholder.getChildren().add(personListPanel.getRoot());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"zyng233":34,"-":194}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" private Label nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" @FXML","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" private Label lastContacted;","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" @FXML","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":" private Label callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" @FXML","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" nric.setText(person.getNric().value);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" lastContacted.setText(person.getLastContacted().toString());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"brendanng7"},"content":" callFrequency.setText(person.getCallFrequency().toString());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":3,"GabrielCWT":3,"brendanng7":3,"-":59}},{"path":"src/main/resources/view/CallHistoryCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":" \u003cLabel fx:id\u003d\"indexLabel\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":" \u003cLabel fx:id\u003d\"contactDateLabel\" styleClass\u003d\"cell_big_label\"/\u003e \u003c!-- Change fx:id to match Java code --\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\"\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"0.5\"\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":" \u003cLabel fx:id\u003d\"contactDate\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":20}},{"path":"src/main/resources/view/CallHistoryPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":" \u003cListView fx:id\u003d\"callHistoryView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":8}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"zyng233"},"content":" \u003cStackPane fx:id\u003d\"mainListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"zyng233":1,"-":59}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":" \u003cInsets bottom\u003d\"5\" left\u003d\"15\" right\u003d\"5\" top\u003d\"5\" /\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":" \u003cHBox alignment\u003d\"CENTER_LEFT\" spacing\u003d\"0.5\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":" \u003cLabel fx:id\u003d\"nric\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$nric\" /\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Zenkoh1"},"content":" \u003cLabel styleClass\u003d\"cell_big_label\" text\u003d\" - \" /\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" \u003cLabel fx:id\u003d\"name\" styleClass\u003d\"cell_big_label\" text\u003d\"\\$first\" /\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" \u003cLabel fx:id\u003d\"lastContacted\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$lastContacted\" /\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" \u003cLabel fx:id\u003d\"callFrequency\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$callFrequency\" /\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":5,"GabrielCWT":1,"brendanng7":1,"-":33}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NRIC_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"zyng233"},"content":" public void getCallHistory_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"zyng233"},"content":" ContactDateList callHistory \u003d new ContactDateList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"zyng233"},"content":" callHistory.add(new ContactDate(\"2021-01-01\", \"\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":" model.updateDisplayedList(callHistory);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"zyng233"},"content":" assertEquals(callHistory, logic.getCallHistory());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Zenkoh1"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NRIC_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"brendanng7"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":1,"zyng233":10,"brendanng7":3,"-":173}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" public void execute_personAcceptedByModelWithWarning_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" new AddCommand(ALICE).execute(modelStub);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" Person alice2 \u003d new PersonBuilder().withName(ALICE.getName().fullName).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" CommandResult commandResult \u003d new AddCommand(alice2).execute(modelStub);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS_WITH_WARNING, Messages.format(alice2)),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" assertEquals(Arrays.asList(ALICE, alice2), modelStub.personsAdded);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Zenkoh1"},"content":" public boolean hasSimilarPerson(Person person) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Zenkoh1"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Zenkoh1"},"content":" public boolean hasSimilarPerson(Person person, Person exclude) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Zenkoh1"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"GabrielCWT"},"content":" @Override","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted(Person target, ContactDate notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"GabrielCWT"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"linette-g"},"content":" @Override","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"linette-g"},"content":" public Person getPersonByNric(Nric nric) {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"linette-g"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"zyng233"},"content":" public void updateDisplayedList(ContactDateList callHistory) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"zyng233"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"zyng233"},"content":" public ContactDateList getDisplayedCallHistory() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"zyng233"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"zyng233"},"content":" @Override","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"zyng233"},"content":" public ContactDateList getCallHistory(Person target) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"zyng233"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"Zenkoh1"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"Zenkoh1"},"content":" public boolean hasSimilarPerson(Person person) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"Zenkoh1"},"content":" requireNonNull(person);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"Zenkoh1"},"content":" return personsAdded.stream().anyMatch(person::isSimilarPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"linette-g":6,"Zenkoh1":29,"GabrielCWT":5,"zyng233":17,"-":203}},{"path":"src/test/java/seedu/address/logic/commands/CommandResultTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class CommandResultTest {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\")));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(new CommandResult(\"feedback\", false, false)));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertTrue(commandResult.equals(commandResult));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(null));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(0.5f));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"different\")));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", true, false)));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns false","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(commandResult.equals(new CommandResult(\"feedback\", false, true)));","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void hashcode() {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // same values -\u003e returns same hashcode","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(commandResult.hashCode(), new CommandResult(\"feedback\").hashCode());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // different feedbackToUser value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"different\").hashCode());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different showHelp value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", true, false).hashCode());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different exit value -\u003e returns different hashcode","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertNotEquals(commandResult.hashCode(), new CommandResult(\"feedback\", false, true).hashCode());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new CommandResult(\"feedback\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expected \u003d CommandResult.class.getCanonicalName() + \"{feedbackToUser\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" + commandResult.getFeedbackToUser() + \", showHelp\u003d\" + commandResult.isShowHelp()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" + \", exit\u003d\" + commandResult.isExit() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(expected, commandResult.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"zyng233"},"content":" public void getPersonName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"zyng233"},"content":" // Test case 1: Valid format with a name","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zyng233"},"content":" CommandResult commandResult \u003d new CommandResult(\"User: John Doe\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zyng233"},"content":" assertEquals(\"John Doe\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"zyng233"},"content":" // Test case 2: No colon in feedbackToUser","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"zyng233"},"content":" commandResult \u003d new CommandResult(\"User John Doe\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zyng233"},"content":" assertEquals(\"\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"zyng233"},"content":" // Test case 3: Empty string in feedbackToUser","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"zyng233"},"content":" commandResult \u003d new CommandResult(\"\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"zyng233"},"content":" assertEquals(\"\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"zyng233"},"content":" // Test case 4: Colon but no name after it","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zyng233"},"content":" commandResult \u003d new CommandResult(\"User: \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"zyng233"},"content":" assertEquals(\"\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" // Test case 5: Colon with spaces and name after it","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":" commandResult \u003d new CommandResult(\"User: Jane Doe \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" assertEquals(\"Jane Doe\", commandResult.getPersonName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-12-09","isFullCredit":false}],"authorContributionMap":{"zyng233":23,"-":63}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" public static final String VALID_NRIC_AMY \u003d \"S3862905J\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" public static final String VALID_NRIC_BOB \u003d \"S3233528D\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" public static final String VALID_NOTES \u003d \"This is a note\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":" public static final String VALID_CALL_FREQUENCY_AMY \u003d \"7\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":" public static final String VALID_CALL_FREQUENCY_BOB \u003d \"5\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" public static final String NRIC_DESC_AMY \u003d \" \" + PREFIX_NRIC + VALID_NRIC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" public static final String NRIC_DESC_BOB \u003d \" \" + PREFIX_NRIC + VALID_NRIC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" public static final String NOTES_DESC \u003d \" \" + PREFIX_NOTES + VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"brendanng7"},"content":" public static final String CALL_FREQUENCY_DESC_AMY \u003d","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"brendanng7"},"content":" \" \" + PREFIX_CALL_FREQUENCY + VALID_CALL_FREQUENCY_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"brendanng7"},"content":" public static final String CALL_FREQUENCY_DESC_BOB \u003d","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"brendanng7"},"content":" \" \" + PREFIX_CALL_FREQUENCY + VALID_CALL_FREQUENCY_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" public static final String INVALID_NRIC_DESC \u003d \" \" + PREFIX_NRIC + \"S1234567A\"; // \u0027A\u0027 is not a valid checksum","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"brendanng7"},"content":" public static final String INVALID_CALL_FREQUENCY_DESC \u003d","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"brendanng7"},"content":" \" \" + PREFIX_CALL_FREQUENCY + \"8\"; // Call frequency must be at most 7 days","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_AMY).withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"brendanng7"},"content":" .withTags(VALID_TAG_FRIEND).withCallFrequency(VALID_CALL_FREQUENCY_AMY).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"brendanng7"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withCallFrequency(VALID_CALL_FREQUENCY_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"brendanng7"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":8,"GabrielCWT":3,"brendanng7":12,"-":124}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"linette-g"},"content":" public void equalsIndexCommandTest() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"linette-g"},"content":" public void equalsNricCommandTest() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteFirstNric \u003d new DeleteCommand(new Nric(VALID_NRIC_AMY));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteSecondNric \u003d new DeleteCommand(new Nric(VALID_NRIC_BOB));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"linette-g"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"linette-g"},"content":" assertTrue(deleteFirstNric.equals(deleteFirstNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"linette-g"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteFirstNricCopy \u003d new DeleteCommand(new Nric(VALID_NRIC_AMY));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"linette-g"},"content":" assertTrue(deleteFirstNric.equals(deleteFirstNricCopy));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"linette-g"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"linette-g"},"content":" assertFalse(deleteFirstNric.equals(1));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"linette-g"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"linette-g"},"content":" assertFalse(deleteFirstNric.equals(null));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"linette-g"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"linette-g"},"content":" assertFalse(deleteFirstNric.equals(deleteSecondNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"linette-g"},"content":" // Test for Index","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteCommandForIndex \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"linette-g"},"content":" String expectedIndexString \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"linette-g"},"content":" + \", targetNric\u003dnull}\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedIndexString, deleteCommandForIndex.toString());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"linette-g"},"content":" // Test for NRIC","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"linette-g"},"content":" Nric targetNric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteCommandWithNric \u003d new DeleteCommand(targetNric);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"linette-g"},"content":" String expectedNricString \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003dnull, targetNric\u003d\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"linette-g"},"content":" + targetNric + \"}\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedNricString, deleteCommandWithNric.toString());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"linette-g"},"content":" public void execute_validNric_success() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"linette-g"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"linette-g"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getNric());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"linette-g"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"linette-g"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"linette-g"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"linette-g"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"linette-g"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"linette-g"},"content":" public void execute_invalidNric_throwsCommandException() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"linette-g"},"content":" Nric unregisteredNric \u003d new Nric(\"S5419807H\");","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"linette-g"},"content":" DeleteCommand markCommand \u003d new DeleteCommand(unregisteredNric);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"linette-g"},"content":" assertCommandFailure(markCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"linette-g":60,"-":116}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Zenkoh1"},"content":" public void execute_similarPersonUnfilteredList_successWithWarning() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Zenkoh1"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Zenkoh1"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(firstPerson.getName().fullName)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Zenkoh1"},"content":" .build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Zenkoh1"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Zenkoh1"},"content":" Person secondPerson \u003d model.getFilteredPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Zenkoh1"},"content":" Person editedPerson \u003d new PersonBuilder(secondPerson).withName(firstPerson.getName().fullName).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Zenkoh1"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS_WITH_WARNING,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Zenkoh1"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Zenkoh1"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Zenkoh1"},"content":" expectedModel.setPerson(secondPerson, editedPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Zenkoh1"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Zenkoh1"},"content":" public void execute_similarPersonFilteredList_successWithWarning() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Zenkoh1"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Zenkoh1"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Zenkoh1"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Zenkoh1"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(personInList.getName().fullName)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Zenkoh1"},"content":" .build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Zenkoh1"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Zenkoh1"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"Zenkoh1"},"content":" Person editedPerson \u003d new PersonBuilder(firstPerson).withName(personInList.getName().fullName).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Zenkoh1"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS_WITH_WARNING,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Zenkoh1"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Zenkoh1"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Zenkoh1"},"content":" expectedModel.setPerson(firstPerson, editedPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Zenkoh1"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"linette-g"},"content":" public void equalsIndexCommandTest() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"linette-g"},"content":" public void equalsNricCommandTest() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"linette-g"},"content":" final EditCommand standardCommand \u003d new EditCommand(new Nric(VALID_NRIC_AMY), DESC_AMY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"linette-g"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"linette-g"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"linette-g"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(new Nric(VALID_NRIC_AMY), copyDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"linette-g"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"linette-g"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"linette-g"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"linette-g"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"linette-g"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"linette-g"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"linette-g"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"linette-g"},"content":" // different index -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"linette-g"},"content":" assertFalse(standardCommand.equals(new EditCommand(new Nric(VALID_NRIC_BOB), DESC_AMY)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"linette-g"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"linette-g"},"content":" assertFalse(standardCommand.equals(new EditCommand(new Nric(VALID_NRIC_AMY), DESC_BOB)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"linette-g"},"content":" // Test for Index","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"linette-g"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"linette-g"},"content":" EditCommand editCommandForIndex \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"linette-g"},"content":" String expectedIndexString \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"linette-g"},"content":" + \", nric\u003dnull, editPersonDescriptor\u003d\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"linette-g"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedIndexString, editCommandForIndex.toString());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"linette-g"},"content":" // Test for NRIC","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"linette-g"},"content":" Nric nric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"linette-g"},"content":" EditCommand editCommandForNric \u003d new EditCommand(nric, editPersonDescriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"linette-g"},"content":" String expectedNricString \u003d EditCommand.class.getCanonicalName() + \"{index\u003dnull, nric\u003d\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"linette-g"},"content":" + nric + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedNricString, editCommandForNric.toString());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"linette-g"},"content":" public void execute_validNric_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"linette-g"},"content":" Person personToEdit \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"linette-g"},"content":" Person editedPerson \u003d new PersonBuilder(personToEdit).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"linette-g"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"linette-g"},"content":" EditCommand editCommand \u003d new EditCommand(personToEdit.getNric(), descriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"linette-g"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"linette-g"},"content":" Messages.format(editedPerson));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"linette-g"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"linette-g"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"linette-g"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"linette-g"},"content":" public void execute_invalidNric_throwsCommandException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"linette-g"},"content":" Nric unregisteredNric \u003d new Nric(\"S5419807H\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"linette-g"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"linette-g"},"content":" EditCommand editCommand \u003d new EditCommand(unregisteredNric, descriptor);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"linette-g"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"linette-g":66,"Zenkoh1":42,"-":181}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" //different nric -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{nric\u003d\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" + editPersonDescriptor.getNric().orElse(null) + \", name\u003d\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"brendanng7"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", call frequency\u003d\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"brendanng7"},"content":" + editPersonDescriptor.getCallFrequency().orElse(null) + \"}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":8,"brendanng7":2,"-":68}},{"path":"src/test/java/seedu/address/logic/commands/HistoryCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.contactdate.ContactDateList;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" * Contains integration tests (interaction with the Model) for {@code HistoryCommand}.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":"public class HistoryCommandTest {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zyng233"},"content":" public void equals() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"zyng233"},"content":" HistoryCommand firstHistoryCommand \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zyng233"},"content":" HistoryCommand secondHistoryCommand \u003d new HistoryCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"zyng233"},"content":" assertTrue(firstHistoryCommand.equals(firstHistoryCommand));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"zyng233"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zyng233"},"content":" HistoryCommand firstHistoryCommandCopy \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" assertTrue(firstHistoryCommand.equals(firstHistoryCommandCopy));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"zyng233"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zyng233"},"content":" assertFalse(firstHistoryCommand.equals(1));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zyng233"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"zyng233"},"content":" assertFalse(firstHistoryCommand.equals(null));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"zyng233"},"content":" // different command -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"zyng233"},"content":" assertFalse(firstHistoryCommand.equals(secondHistoryCommand));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"zyng233"},"content":" // Test for HistoryCommand for Index","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"zyng233"},"content":" public void equalsIndexCommandTest() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyFirstCommand \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"zyng233"},"content":" HistoryCommand historySecondCommand \u003d new HistoryCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"zyng233"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"zyng233"},"content":" assertTrue(historyFirstCommand.equals(historyFirstCommand));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"zyng233"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyFirstCommandCopy \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"zyng233"},"content":" assertTrue(historyFirstCommand.equals(historyFirstCommandCopy));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zyng233"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstCommand.equals(1));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"zyng233"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstCommand.equals(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zyng233"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstCommand.equals(historySecondCommand));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"zyng233"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zyng233"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"zyng233"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"zyng233"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"zyng233"},"content":" assertCommandFailure(historyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"zyng233"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zyng233"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"zyng233"},"content":" assertCommandFailure(historyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":" public void execute_validIndexUnfilteredList_success() throws CommandException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"zyng233"},"content":" Person personToViewHistory \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"zyng233"},"content":" String expectedMessage \u003d String.format(HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"zyng233"},"content":" personToViewHistory.getName());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"zyng233"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"zyng233"},"content":" ContactDateList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"zyng233"},"content":" CommandResult result \u003d historyCommand.execute(model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedCallHistory, model.getDisplayedCallHistory());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"zyng233"},"content":" public void execute_validIndexFilteredList_success() throws CommandException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"zyng233"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"zyng233"},"content":" Person personToViewHistory \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"zyng233"},"content":" String expectedMessage \u003d String.format(HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"zyng233"},"content":" personToViewHistory.getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"zyng233"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"zyng233"},"content":" ContactDateList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"zyng233"},"content":" CommandResult result \u003d historyCommand.execute(model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedCallHistory, model.getDisplayedCallHistory());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"zyng233"},"content":" // Test for HistoryCommand for Nric","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"zyng233"},"content":" public void equalsNricCommandTest() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyFirstNric \u003d new HistoryCommand(new Nric(VALID_NRIC_AMY));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"zyng233"},"content":" HistoryCommand historySecondNric \u003d new HistoryCommand(new Nric(VALID_NRIC_BOB));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"zyng233"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"zyng233"},"content":" assertTrue(historyFirstNric.equals(historyFirstNric));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"zyng233"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyFirstNricCopy \u003d new HistoryCommand(new Nric(VALID_NRIC_AMY));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"zyng233"},"content":" assertTrue(historyFirstNric.equals(historyFirstNricCopy));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"zyng233"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstNric.equals(1));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"zyng233"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstNric.equals(null));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"zyng233"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"zyng233"},"content":" assertFalse(historyFirstNric.equals(historySecondNric));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"zyng233"},"content":" public void execute_invalidNricFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"zyng233"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(new Nric(VALID_NRIC_BOB));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"zyng233"},"content":" assertCommandFailure(historyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"zyng233"},"content":" public void execute_invalidNricUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(new Nric(VALID_NRIC_BOB));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"zyng233"},"content":" assertCommandFailure(historyCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"zyng233"},"content":" public void execute_validNricFilteredList_success() throws CommandException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"zyng233"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"zyng233"},"content":" Person personToViewHistory \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(personToViewHistory.getNric());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"zyng233"},"content":" String expectedMessage \u003d String.format(HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"zyng233"},"content":" personToViewHistory.getName());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"zyng233"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"zyng233"},"content":" ContactDateList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"zyng233"},"content":" CommandResult result \u003d historyCommand.execute(model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedCallHistory, model.getDisplayedCallHistory());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"zyng233"},"content":" public void execute_validNricUnfilteredList_success() throws CommandException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"zyng233"},"content":" Person personToViewHistory \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommand \u003d new HistoryCommand(personToViewHistory.getNric());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"zyng233"},"content":" String expectedMessage \u003d String.format(HistoryCommand.MESSAGE_SHOW_HISTORY_SUCCESS,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"zyng233"},"content":" personToViewHistory.getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"zyng233"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"zyng233"},"content":" ContactDateList expectedCallHistory \u003d expectedModel.getCallHistory(personToViewHistory);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"zyng233"},"content":" CommandResult result \u003d historyCommand.execute(model);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedCallHistory, model.getDisplayedCallHistory());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"zyng233"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"zyng233"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommandWithIndex \u003d new HistoryCommand(targetIndex);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"zyng233"},"content":" String expected \u003d HistoryCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"zyng233"},"content":" + \", targetNric\u003dnull}\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"zyng233"},"content":" assertEquals(expected, historyCommandWithIndex.toString());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"zyng233"},"content":" Nric targetNric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"zyng233"},"content":" HistoryCommand historyCommandWithNric \u003d new HistoryCommand(targetNric);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"zyng233"},"content":" String expectedNricString \u003d HistoryCommand.class.getCanonicalName() + \"{targetIndex\u003dnull, targetNric\u003d\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"zyng233"},"content":" + targetNric + \"}\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"zyng233"},"content":" assertEquals(expectedNricString, historyCommandWithNric.toString());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":219}},{"path":"src/test/java/seedu/address/logic/commands/MarkCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"linette-g"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" * {@code MarkCommand}.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":"public class MarkCommandTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" Person personToMark \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d String.format(MarkCommand.MESSAGE_MARK_PERSON_SUCCESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" Messages.format(personToMark));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" expectedModel.markAsContacted(personToMark, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" assertCommandSuccess(markCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(outOfBoundIndex, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"GabrielCWT"},"content":" assertCommandFailure(markCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"GabrielCWT"},"content":" Person personToMark \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d String.format(MarkCommand.MESSAGE_MARK_PERSON_SUCCESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" Messages.format(personToMark));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" expectedModel.markAsContacted(personToMark, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" assertCommandSuccess(markCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(outOfBoundIndex, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"GabrielCWT"},"content":" assertCommandFailure(markCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"linette-g"},"content":" public void equalsIndexCommandTest() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstCommand \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markSecondCommand \u003d new MarkCommand(INDEX_SECOND_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(markFirstCommand.equals(markFirstCommand));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"GabrielCWT"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstCommandCopy \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(markFirstCommand.equals(markFirstCommandCopy));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"GabrielCWT"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstCommand.equals(1));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"GabrielCWT"},"content":" // different date -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate2 \u003d new ContactDateBuilder().withNotes(\"different note\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstCommandDifferentDate \u003d new MarkCommand(INDEX_FIRST_PERSON, validDate2);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstCommand.equals(markFirstCommandDifferentDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"GabrielCWT"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstCommand.equals(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"GabrielCWT"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstCommand.equals(markSecondCommand));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"linette-g"},"content":" public void equalsNricCommandTest() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstNric \u003d new MarkCommand(new Nric(VALID_NRIC_AMY), validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markSecondNric \u003d new MarkCommand(new Nric(VALID_NRIC_BOB), validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"linette-g"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"linette-g"},"content":" assertTrue(markFirstNric.equals(markFirstNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"linette-g"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstNricCopy \u003d new MarkCommand(new Nric(VALID_NRIC_AMY), validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"linette-g"},"content":" assertTrue(markFirstNric.equals(markFirstNricCopy));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"GabrielCWT"},"content":" // different date -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate2 \u003d new ContactDateBuilder().withNotes(\"different note\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markFirstNricDifferentDate \u003d new MarkCommand(new Nric(VALID_NRIC_AMY), validDate2);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(markFirstNric.equals(markFirstNricDifferentDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"linette-g"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"linette-g"},"content":" assertFalse(markFirstNric.equals(1));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"linette-g"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"linette-g"},"content":" assertFalse(markFirstNric.equals(null));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"linette-g"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"linette-g"},"content":" assertFalse(markFirstNric.equals(markSecondNric));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"GabrielCWT"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"linette-g"},"content":" // Test for Index","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"GabrielCWT"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommandWithIndex \u003d new MarkCommand(targetIndex, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"linette-g"},"content":" String expectedIndexString \u003d MarkCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"linette-g"},"content":" + \", targetNric\u003dnull}\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedIndexString, markCommandWithIndex.toString());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"linette-g"},"content":" // Test for NRIC","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"linette-g"},"content":" Nric targetNric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommandWithNric \u003d new MarkCommand(targetNric, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"linette-g"},"content":" String expectedNricString \u003d MarkCommand.class.getCanonicalName() + \"{targetIndex\u003dnull, targetNric\u003d\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"linette-g"},"content":" + targetNric + \"}\";","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"linette-g"},"content":" assertEquals(expectedNricString, markCommandWithNric.toString());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"linette-g"},"content":" public void execute_validNric_success() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"linette-g"},"content":" Person personToMark \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(personToMark.getNric(), validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"linette-g"},"content":" String expectedMessage \u003d String.format(MarkCommand.MESSAGE_MARK_PERSON_SUCCESS,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"linette-g"},"content":" Messages.format(personToMark));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"linette-g"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"GabrielCWT"},"content":" expectedModel.markAsContacted(personToMark, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"linette-g"},"content":" assertCommandSuccess(markCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"linette-g"},"content":" public void execute_invalidNric_throwsCommandException() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"linette-g"},"content":" Nric unregisteredNric \u003d new Nric(\"S5419807H\");","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand markCommand \u003d new MarkCommand(unregisteredNric, validDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"linette-g"},"content":" assertCommandFailure(markCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NRIC);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"linette-g":53,"GabrielCWT":137}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CALL_FREQUENCY_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_CALL_FREQUENCY_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NRIC_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NRIC_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NRIC_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"brendanng7"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"brendanng7"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" String validExpectedPersonString \u003d NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":" // multiple nrics","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Zenkoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Zenkoh1"},"content":" validExpectedPersonString + NRIC_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"brendanng7"},"content":" + NAME_DESC_AMY + ADDRESS_DESC_AMY + CALL_FREQUENCY_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Zenkoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Zenkoh1"},"content":" PREFIX_NRIC, PREFIX_NAME,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"brendanng7"},"content":" PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE, PREFIX_CALL_FREQUENCY));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Zenkoh1"},"content":" // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, INVALID_NRIC_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Zenkoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Zenkoh1"},"content":" // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NRIC_DESC,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Zenkoh1"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Zenkoh1"},"content":" assertParseSuccess(parser, NRIC_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"brendanng7"},"content":" + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + CALL_FREQUENCY_DESC_AMY,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Zenkoh1"},"content":" // missing nric prefix","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, VALID_NRIC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Zenkoh1"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + VALID_NAME_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"Zenkoh1"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + VALID_PHONE_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"Zenkoh1"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"Zenkoh1"},"content":" + VALID_EMAIL_BOB + ADDRESS_DESC_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"Zenkoh1"},"content":" + EMAIL_DESC_BOB + VALID_ADDRESS_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, VALID_NRIC_BOB + VALID_NAME_BOB + VALID_PHONE_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"Zenkoh1"},"content":" + VALID_EMAIL_BOB + VALID_ADDRESS_BOB, expectedMessage);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"Zenkoh1"},"content":" // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, INVALID_NRIC_DESC + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"brendanng7"},"content":" Nric.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"brendanng7"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"brendanng7"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"brendanng7"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"brendanng7"},"content":" + INVALID_ADDRESS_DESC + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"brendanng7"},"content":" Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"brendanng7"},"content":" Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"brendanng7"},"content":" // invalid call frequency","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"brendanng7"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"brendanng7"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + VALID_TAG_FRIEND + INVALID_CALL_FREQUENCY_DESC,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"brendanng7"},"content":" CallFrequency.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, NRIC_DESC_BOB + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"brendanng7"},"content":" + INVALID_ADDRESS_DESC + CALL_FREQUENCY_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NRIC_DESC_BOB + NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"brendanng7"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"brendanng7"},"content":" + CALL_FREQUENCY_DESC_BOB,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":42,"brendanng7":38,"-":163}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOTES_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.HistoryCommand;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"GabrielCWT"},"content":" public void parseCommand_mark() throws Exception {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand command \u003d (MarkCommand) parser.parseCommand(","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":" MarkCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"GabrielCWT"},"content":" + \" \" + NOTES_DESC);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(new MarkCommand(INDEX_FIRST_PERSON, validDate), command);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"zyng233"},"content":" public void parseCommand_history() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"zyng233"},"content":" HistoryCommand command \u003d (HistoryCommand) parser.parseCommand(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"zyng233"},"content":" HistoryCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"zyng233"},"content":" assertEquals(new HistoryCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":14,"zyng233":8,"-":101}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"linette-g"},"content":" public void parse_validIndex_returnsDeleteCommand() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"1\", new DeleteCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"linette-g"},"content":" public void parse_validNric_returnsDeleteCommand() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"linette-g"},"content":" assertParseSuccess(parser, VALID_NRIC_AMY, new DeleteCommand(new Nric(VALID_NRIC_AMY)));","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"linette-g":8,"-":31}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NRIC_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NRIC_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CALL_FREQUENCY_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, \"1 q/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"zyng233"},"content":" // invalid NRIC that fails NRIC validation","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"zyng233"},"content":" assertParseFailure(parser, \"S1234567Z\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"zyng233"},"content":" public void parse_validNric_returnsEditCommand() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"zyng233"},"content":" Nric targetNric \u003d new Nric(VALID_NRIC_AMY);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"zyng233"},"content":" String userInput \u003d targetNric + PHONE_DESC_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"zyng233"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"zyng233"},"content":" .withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"zyng233"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetNric, descriptor);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"zyng233"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, \"1\" + INVALID_NRIC_DESC, Nric.MESSAGE_CONSTRAINTS); // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Zenkoh1"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Zenkoh1"},"content":" + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Zenkoh1"},"content":" String userInput \u003d targetIndex.getOneBased() + NRIC_DESC_AMY + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"brendanng7"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND + CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Zenkoh1"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Zenkoh1"},"content":" .withName(VALID_NAME_AMY).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Zenkoh1"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"brendanng7"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(VALID_CALL_FREQUENCY_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Zenkoh1"},"content":" // nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Zenkoh1"},"content":" String userInput \u003d targetIndex.getOneBased() + NRIC_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Zenkoh1"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withNric(VALID_NRIC_AMY).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Zenkoh1"},"content":" // name","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Zenkoh1"},"content":" userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Zenkoh1"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Zenkoh1"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Zenkoh1"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"brendanng7"},"content":" // call frequency","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"brendanng7"},"content":" userInput \u003d targetIndex.getOneBased() + CALL_FREQUENCY_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"brendanng7"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withCallFrequency(VALID_CALL_FREQUENCY_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"brendanng7"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"brendanng7"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":22,"zyng233":16,"brendanng7":11,"-":198}},{"path":"src/test/java/seedu/address/logic/parser/HistoryCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"zyng233"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zyng233"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zyng233"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zyng233"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zyng233"},"content":"import seedu.address.logic.commands.HistoryCommand;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zyng233"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zyng233"},"content":"public class HistoryCommandParserTest {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zyng233"},"content":" private HistoryCommandParser parser \u003d new HistoryCommandParser();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zyng233"},"content":" public void parse_validArgs_returnsHistoryCommand() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zyng233"},"content":" assertParseSuccess(parser, \"1\", new HistoryCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zyng233"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zyng233"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, HistoryCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zyng233"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zyng233"},"content":" public void parse_validNric_returnsHistoryCommand() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zyng233"},"content":" assertParseSuccess(parser, VALID_NRIC_AMY, new HistoryCommand(new Nric(VALID_NRIC_AMY)));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zyng233"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zyng233"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"zyng233":31}},{"path":"src/test/java/seedu/address/logic/parser/MarkCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NOTES_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"linette-g"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.logic.commands.MarkCommand;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"linette-g"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" * outside of the MarkCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" * same path through the MarkCommand, and therefore we test only one of them.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":"public class MarkCommandParserTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" private MarkCommandParser parser \u003d new MarkCommandParser();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"linette-g"},"content":" public void parse_validIndex_returnsMarkCommand() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" assertParseSuccess(parser, \"1\" + NOTES_DESC, new MarkCommand(INDEX_FIRST_PERSON, validDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, MarkCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"linette-g"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"linette-g"},"content":" public void parse_validNric_returnsMarkCommand() {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" assertParseSuccess(parser, VALID_NRIC_AMY + NOTES_DESC, new MarkCommand(new Nric(VALID_NRIC_AMY), validDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"linette-g"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"linette-g"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" public void parse_emptyNotes_returnsMarkCommand() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" ContactDate validDate \u003d new ContactDateBuilder().withNotes(\"\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" assertParseSuccess(parser, \"1\", new MarkCommand(INDEX_FIRST_PERSON, validDate));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"linette-g":8,"GabrielCWT":43}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":" private static final String INVALID_NRIC \u003d \"S1234567A\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" private static final String VALID_NRIC \u003d \"S0431600B\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" public void parseNric_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseNric((String) null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" public void parseNric_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseNric(INVALID_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Zenkoh1"},"content":" public void parseNric_validValueWithoutWhitespace_returnsNric() throws Exception {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Zenkoh1"},"content":" Nric expectedNric \u003d new Nric(VALID_NRIC);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" assertEquals(expectedNric, ParserUtil.parseNric(VALID_NRIC));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Zenkoh1"},"content":" public void parseNric_validValueWithWhitespace_returnsTrimmedNric() throws Exception {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":" String nricWithWhitespace \u003d WHITESPACE + VALID_NRIC + WHITESPACE;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" Nric expectedNric \u003d new Nric(VALID_NRIC);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" assertEquals(expectedNric, ParserUtil.parseNric(nricWithWhitespace));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":27,"-":196}},{"path":"src/test/java/seedu/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.exceptions.DuplicatePersonException;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), addressBook.getPersonList());","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void resetData_withDuplicatePersons_throwsDuplicatePersonException() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Two persons with the same identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e newPersons \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" AddressBookStub newData \u003d new AddressBookStub(newPersons);","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DuplicatePersonException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertFalse(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertTrue(addressBook.hasPerson(editedAlice));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasSimilarPerson(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(addressBook.hasSimilarPerson(ALICE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Zenkoh1"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(addressBook.hasSimilarPerson(ALICE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_personInAddressBookWithExclude_returnsFalse() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Zenkoh1"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(addressBook.hasSimilarPerson(ALICE, ALICE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Zenkoh1"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Zenkoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Zenkoh1"},"content":" .build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(addressBook.hasSimilarPerson(editedAlice));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_newPersonWithSameName_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Zenkoh1"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Zenkoh1"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(ALICE.getName().fullName).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(addressBook.hasSimilarPerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_newPersonWithSamePhoneNumber_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Zenkoh1"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Zenkoh1"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withPhone(ALICE.getPhone().value).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(addressBook.hasSimilarPerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_newPersonWithSameEmail_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Zenkoh1"},"content":" addressBook.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Zenkoh1"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withEmail(ALICE.getEmail().value).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(addressBook.hasSimilarPerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void getPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{persons\u003d\" + addressBook.getPersonList() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * A stub ReadOnlyAddressBook whose persons list can violate interface constraints.","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private final ObservableList\u003cPerson\u003e persons \u003d FXCollections.observableArrayList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" AddressBookStub(Collection\u003cPerson\u003e persons) {","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" this.persons.setAll(persons);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" return persons;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":51,"-":108}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasSimilarPerson(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(modelManager.hasSimilarPerson(ALICE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Zenkoh1"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(modelManager.hasSimilarPerson(ALICE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_personInAddressBookWithExclude_returnsFalse() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Zenkoh1"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(modelManager.hasSimilarPerson(ALICE, ALICE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Zenkoh1"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Zenkoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Zenkoh1"},"content":" .build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(modelManager.hasSimilarPerson(editedAlice));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_newPersonWithSameName_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Zenkoh1"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Zenkoh1"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(ALICE.getName().fullName).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(modelManager.hasSimilarPerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_newPersonWithSamePhoneNumber_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Zenkoh1"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Zenkoh1"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withPhone(ALICE.getPhone().value).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(modelManager.hasSimilarPerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Zenkoh1"},"content":" public void hasSimilarPerson_newPersonWithSameEmail_returnsTrue() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Zenkoh1"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Zenkoh1"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withEmail(ALICE.getEmail().value).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(modelManager.hasSimilarPerson(editedBob));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":54,"-":132}},{"path":"src/test/java/seedu/address/model/contactdate/ContactDateListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.model.contactdate;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDateListTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":" public void getLastContacted() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateList \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" // Throws IndexOutOfBoundsException when list is empty","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" try {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.getLastContacted();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" } catch (IndexOutOfBoundsException e) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(true);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" // test 1","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.add(contactDate);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate, contactDateList.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" // test 2","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" ContactDate newContactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.add(newContactDate);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(newContactDate, contactDateList.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateList \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().withNotes(VALID_NOTES).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.markAsContacted(VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(1, contactDateList.size());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate, contactDateList.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted_contactDateProvided() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateList \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" contactDateList.markAsContacted(contactDate);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(1, contactDateList.size());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate, contactDateList.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" public void equals() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateList \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":" ContactDateList contactDateListCopy \u003d new ContactDateList();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"zyng233"},"content":" ContactDateList contactDateListCopy2 \u003d new ContactDateList(new ContactDate(\"2021-10-10\", \"\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"zyng233"},"content":" ContactDateList contactDateListCopy3 \u003d new ContactDateList(new ContactDate(\"2021-10-11\", \"\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(contactDateList.equals(contactDateList));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"zyng233"},"content":" // different object, same types, same values -\u003e returns true","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zyng233"},"content":" assertTrue(contactDateList.equals(contactDateListCopy));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"zyng233"},"content":" // different object, same types, different values -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zyng233"},"content":" assertFalse(contactDateListCopy2.equals(contactDateListCopy3));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDateList.equals(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDateList.equals(5.0f));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":68,"zyng233":7}},{"path":"src/test/java/seedu/address/model/contactdate/ContactDateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.model.contactdate;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDateTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(NullPointerException.class, () -\u003e new ContactDate(null, VALID_NOTES));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" public void constructor_invalidContactDate_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" String invalidContactDate \u003d \"\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new ContactDate(invalidContactDate, VALID_NOTES));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" public void isValidContactDate() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" // null tag contact date","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(NullPointerException.class, () -\u003e ContactDate.isValidContactDate(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" // invalid contact date","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(ContactDate.isValidContactDate(\"2020-13-01\"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(ContactDate.isValidContactDate(\"2020-01-32\"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(ContactDate.isValidContactDate(\"\"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" // valid contact date","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(ContactDate.isValidContactDate(\"2020-01-01\"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" public void createCurrentDate() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" LocalDate currentDate \u003d LocalDate.now();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d ContactDate.createCurrentDate(VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate.value, currentDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate.getNotes(), VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"brendanng7"},"content":" public void addCallFrequency_validCallFrequency_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().withDate(\"2020-01-01\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" CallFrequency callFrequency \u003d new CallFrequency(\"7\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":" ContactDate newContactDate \u003d contactDate.add(callFrequency);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" ContactDate targetContactDate \u003d new ContactDateBuilder().withDate(\"2020-01-08\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":" assertEquals(newContactDate, targetContactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"GabrielCWT"},"content":" public void equals() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"GabrielCWT"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDateCopy \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(contactDate.equals(contactDateCopy));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"GabrielCWT"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"GabrielCWT"},"content":" assertTrue(contactDate.equals(contactDate));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDate.equals(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"GabrielCWT"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDate.equals(5.0f));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"GabrielCWT"},"content":" // different contact date -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"GabrielCWT"},"content":" ContactDate differentContactDate \u003d new ContactDateBuilder().withDate(\"2020-01-02\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDate.equals(differentContactDate));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"GabrielCWT"},"content":" // different notes -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"GabrielCWT"},"content":" ContactDate differentNotes \u003d new ContactDateBuilder().withNotes(\"Different notes\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"GabrielCWT"},"content":" assertFalse(contactDate.equals(differentNotes));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":77,"brendanng7":7}},{"path":"src/test/java/seedu/address/model/person/CallFrequencyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"brendanng7"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"brendanng7"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"brendanng7"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":"public class CallFrequencyTest {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"brendanng7"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":" assertThrows(NullPointerException.class, () -\u003e new CallFrequency(null));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"brendanng7"},"content":" public void constructor_invalidCallFrequency_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"brendanng7"},"content":" String invalidCallFrequency \u003d \"8\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new CallFrequency(invalidCallFrequency));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"brendanng7"},"content":" public void isValidCallFrequency() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"brendanng7"},"content":" // null call frequency","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"brendanng7"},"content":" assertThrows(NullPointerException.class, () -\u003e CallFrequency.isValidCallFrequency(null));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"brendanng7"},"content":" // invalid call frequencies","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"brendanng7"},"content":" assertFalse(CallFrequency.isValidCallFrequency(\"\")); // empty string","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"brendanng7"},"content":" assertFalse(CallFrequency.isValidCallFrequency(\"8\")); // empty string","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"brendanng7"},"content":" assertFalse(CallFrequency.isValidCallFrequency(\"0\")); // empty string","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"brendanng7"},"content":" // valid call frequencies which are between 1 and 7 inclusive","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"1\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"2\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"3\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"4\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"5\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"6\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"brendanng7"},"content":" assertTrue(CallFrequency.isValidCallFrequency(\"7\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":" public void equals() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":" CallFrequency callFrequency \u003d new CallFrequency(\"7\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"brendanng7"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"brendanng7"},"content":" assertTrue(callFrequency.equals(new CallFrequency(\"7\")));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" assertTrue(callFrequency.equals(callFrequency));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"brendanng7"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"brendanng7"},"content":" assertFalse(callFrequency.equals(null));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"brendanng7"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"brendanng7"},"content":" assertFalse(callFrequency.equals(5.0f));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"brendanng7"},"content":" assertFalse(callFrequency.equals(new CallFrequency(\"5\")));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"brendanng7"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"brendanng7":60}},{"path":"src/test/java/seedu/address/model/person/NricTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Zenkoh1"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Zenkoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Zenkoh1"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Zenkoh1"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Zenkoh1"},"content":"public class NricTest {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e new Nric(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Zenkoh1"},"content":" public void constructor_invalidNric_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Zenkoh1"},"content":" String invalidNric \u003d \"\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Nric(invalidNric));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Zenkoh1"},"content":" public void isValidNric() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Zenkoh1"},"content":" // null nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(NullPointerException.class, () -\u003e Nric.isValidNric(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Zenkoh1"},"content":" // invalid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"\")); // empty string","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\" \")); // spaces only","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"232323\")); // just numbers","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"S64065D\")); // only 5 digits","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"S6406542Z\")); // wrong checksum","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"P6406542D\")); // starting with P","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(Nric.isValidNric(\"S6406542232Z\")); // too long","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Zenkoh1"},"content":" // valid nric","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"s6406542d\")); // lowercase alphabets","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"S6406542D\")); // uppercase alphabets","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"T5517825E\")); // starting with T","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"F3895385X\")); // starting with F","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(Nric.isValidNric(\"G8413738W\")); // starting with G","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" public void equals() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" Nric nric \u003d new Nric(\"S6406542D\");","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(nric.equals(new Nric(\"S6406542D\")));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" // same values with different case -\u003e returns true","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(nric.equals(new Nric(\"s6406542d\")));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(nric.equals(nric));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(nric.equals(null));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(nric.equals(5.0f));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(nric.equals(new Nric(\"S9798929Z\")));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":"}","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":66}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CALL_FREQUENCY_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" // same nric, all other attributes different -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Zenkoh1"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"brendanng7"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(VALID_CALL_FREQUENCY_BOB).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" // different nric, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" // nric differs in case, all other attributes same -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NRIC_BOB.toLowerCase()).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":" // nric has trailing spaces, all other attributes same -\u003e returns true","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Zenkoh1"},"content":" String nricWithTrailingSpaces \u003d VALID_NRIC_BOB + \" \";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Zenkoh1"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nricWithTrailingSpaces).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(BOB.isSamePerson(editedBob));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" public void isSimilarPerson() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(ALICE.isSimilarPerson(ALICE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(ALICE.isSimilarPerson(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" // same nric, all other attributes different -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Zenkoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Zenkoh1"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":" .withCallFrequency(VALID_CALL_FREQUENCY_BOB).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(ALICE.isSimilarPerson(editedAlice));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Zenkoh1"},"content":" // same name -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(BOB.isSimilarPerson(editedAlice));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Zenkoh1"},"content":" // same name lowercase -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(BOB.isSimilarPerson(editedAlice));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Zenkoh1"},"content":" // same phone -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(BOB.isSimilarPerson(editedAlice));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Zenkoh1"},"content":" // same email -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(BOB.isSimilarPerson(editedAlice));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Zenkoh1"},"content":" // same email lowercase -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB.toLowerCase()).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Zenkoh1"},"content":" assertTrue(BOB.isSimilarPerson(editedAlice));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Zenkoh1"},"content":" // different nric, name, phone, email, all other attributes same -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Zenkoh1"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(ALICE.isSimilarPerson(editedAlice));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Zenkoh1"},"content":" // different nric -\u003e returns false","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Zenkoh1"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withNric(VALID_NRIC_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Zenkoh1"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Zenkoh1"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"GabrielCWT"},"content":" public void markAsContacted() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"GabrielCWT"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"GabrielCWT"},"content":" person.markAsContacted(contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"GabrielCWT"},"content":" // 1 contact date added on initialisation and another added by markAsContacted","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(2, person.getContactDates().size());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"GabrielCWT"},"content":" public void getLastContacted() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"GabrielCWT"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(person.getContactDates().getLastContacted(), person.getLastContacted());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Zenkoh1"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{nric\u003d\" + ALICE.getNric()","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Zenkoh1"},"content":" + \", name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"brendanng7"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"brendanng7"},"content":" + \", tags\u003d\" + ALICE.getTags() + \", call frequency\u003d\" + ALICE.getCallFrequency() + \"}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":58,"GabrielCWT":17,"brendanng7":5,"-":87}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedContactDateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.storage.JsonAdaptedContactDate.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.testutil.ContactDateBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"public class JsonAdaptedContactDateTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" private static final String INVALID_DATE \u003d \"2024-13-01\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" private static final String VALID_DATE \u003d \"2024-01-01\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_validContactDateDetails_returnsContactDate() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" ContactDate contactDate \u003d new ContactDateBuilder().build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedContactDate jsonContactDate \u003d new JsonAdaptedContactDate(contactDate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":" assertEquals(contactDate, jsonContactDate.toModelType());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_invalidDate_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedContactDate jsonContactDate \u003d new JsonAdaptedContactDate(INVALID_DATE, VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d ContactDate.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" // assertThrows(IllegalValueException.class, expectedMessage, jsonContactDate::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalValueException.class, expectedMessage, jsonContactDate::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_nullDate_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedContactDate jsonContactDate \u003d new JsonAdaptedContactDate(null, VALID_NOTES);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"date\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalValueException.class, expectedMessage, jsonContactDate::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_nullNotes_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedContactDate jsonContactDate \u003d new JsonAdaptedContactDate(VALID_DATE, null);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"notes\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalValueException.class, expectedMessage, jsonContactDate::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":46}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Zenkoh1"},"content":" private static final String INVALID_NRIC \u003d \"S1234567A\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" private static final String INVALID_CONTACT_DATE \u003d \"2020-13-01\";","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"brendanng7"},"content":" private static final String INVALID_CALL_FREQUENCY \u003d \"0\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" private static final String VALID_NRIC \u003d BENSON.getNric().toString();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" private static final List\u003cJsonAdaptedContactDate\u003e VALID_CONTACT_DATES \u003d BENSON.getContactDates().stream()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":" .map(JsonAdaptedContactDate::new)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" private static final String VALID_CALL_FREQUENCY \u003d \"7\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":" public void toModelType_invalidNric_throwsIllegalValueException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(INVALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Zenkoh1"},"content":" String expectedMessage \u003d Nric.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Zenkoh1"},"content":" @Test","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Zenkoh1"},"content":" public void toModelType_nullNric_throwsIllegalValueException() {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Nric.class.getSimpleName());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, INVALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, INVALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, INVALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, null, VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"brendanng7"},"content":" INVALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL, null,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"GabrielCWT"},"content":" VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"brendanng7"},"content":" invalidTags, VALID_CONTACT_DATES, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_invalidContactDates_throwsIllegalValueException() {","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"GabrielCWT"},"content":" List\u003cJsonAdaptedContactDate\u003e invalidContactDates \u003d new ArrayList\u003c\u003e(VALID_CONTACT_DATES);","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"GabrielCWT"},"content":" invalidContactDates.add(new JsonAdaptedContactDate(INVALID_CONTACT_DATE, VALID_NOTES));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"GabrielCWT"},"content":" VALID_ADDRESS,","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, invalidContactDates, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"GabrielCWT"},"content":" @Test","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"GabrielCWT"},"content":" public void toModelType_emptyContactDates_returnsPerson() throws Exception {","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"GabrielCWT"},"content":" List\u003cJsonAdaptedContactDate\u003e emptyContactDates \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"GabrielCWT"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"GabrielCWT"},"content":" VALID_ADDRESS,","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, emptyContactDates, VALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"GabrielCWT"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"brendanng7"},"content":" public void toModelType_invalidCallFrequency_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"brendanng7"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_CONTACT_DATES, INVALID_CALL_FREQUENCY);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"brendanng7"},"content":" String expectedMessage \u003d CallFrequency.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"brendanng7"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"brendanng7"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"brendanng7"},"content":" public void toModelType_nullCallFrequency_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"brendanng7"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NRIC, VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"brendanng7"},"content":" VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"brendanng7"},"content":" VALID_TAGS, VALID_CONTACT_DATES, null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"brendanng7"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, CallFrequency.class.getSimpleName());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"brendanng7"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":14,"GabrielCWT":31,"brendanng7":32,"-":99}},{"path":"src/test/java/seedu/address/testutil/ContactDateBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"GabrielCWT"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"GabrielCWT"},"content":"import seedu.address.model.contactdate.ContactDate;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"GabrielCWT"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"GabrielCWT"},"content":" * A utility class to help with building ContactDate objects.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"GabrielCWT"},"content":"public class ContactDateBuilder {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"GabrielCWT"},"content":" public static final String DEFAULT_DATE \u003d null;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"GabrielCWT"},"content":" public static final String DEFAULT_NOTES \u003d \"This is a default note\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"GabrielCWT"},"content":" private String date;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"GabrielCWT"},"content":" private String notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"GabrielCWT"},"content":" * Creates a {@code ContactDateBuilder} with the default details.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateBuilder() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"GabrielCWT"},"content":" date \u003d DEFAULT_DATE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"GabrielCWT"},"content":" notes \u003d DEFAULT_NOTES;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"GabrielCWT"},"content":" * Initializes the ContactDateBuilder with the data of {@code contactDateToCopy}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateBuilder(ContactDate contactDateToCopy) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"GabrielCWT"},"content":" date \u003d contactDateToCopy.value.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"GabrielCWT"},"content":" notes \u003d contactDateToCopy.getNotes();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"GabrielCWT"},"content":" * Sets the {@code Date} of the {@code ContactDate} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateBuilder withDate(String date) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"GabrielCWT"},"content":" this.date \u003d date;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"GabrielCWT"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"GabrielCWT"},"content":" * Sets the {@code Notes} of the {@code ContactDate} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"GabrielCWT"},"content":" public ContactDateBuilder withNotes(String notes) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"GabrielCWT"},"content":" this.notes \u003d notes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"GabrielCWT"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"GabrielCWT"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"GabrielCWT"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"GabrielCWT"},"content":" * Builds the ContactDate object.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"GabrielCWT"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"GabrielCWT"},"content":" public ContactDate build() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"GabrielCWT"},"content":" if (date \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"GabrielCWT"},"content":" return ContactDate.createCurrentDate(notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"GabrielCWT"},"content":" return new ContactDate(date, notes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"GabrielCWT"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"GabrielCWT"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"GabrielCWT":56}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Zenkoh1"},"content":" descriptor.setNric(person.getNric());","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" * Sets the {@code Nric} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Zenkoh1"},"content":" public EditPersonDescriptorBuilder withNric(String nric) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" descriptor.setNric(new Nric(nric));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" return this;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Zenkoh1"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Zenkoh1"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"brendanng7"},"content":" * Sets the {@code CallFrequency} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"brendanng7"},"content":" public EditPersonDescriptorBuilder withCallFrequency(String callFrequency) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"brendanng7"},"content":" descriptor.setCallFrequency(new CallFrequency(callFrequency));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"brendanng7"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":9,"brendanng7":10,"-":87}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import seedu.address.model.person.CallFrequency;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Zenkoh1"},"content":"import seedu.address.model.person.Nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Zenkoh1"},"content":" public static final String DEFAULT_NRIC \u003d \"S6253973I\";","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"brendanng7"},"content":" public static final String DEFAULT_CALL_FREQUENCY \u003d \"7\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Zenkoh1"},"content":" private Nric nric;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"brendanng7"},"content":" private CallFrequency callFrequency;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Zenkoh1"},"content":" nric \u003d new Nric(DEFAULT_NRIC);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"brendanng7"},"content":" callFrequency \u003d new CallFrequency(DEFAULT_CALL_FREQUENCY);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" nric \u003d personToCopy.getNric();","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" callFrequency \u003d personToCopy.getCallFrequency();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" /**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Zenkoh1"},"content":" * Sets the {@code Nric} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Zenkoh1"},"content":" */","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Zenkoh1"},"content":" public PersonBuilder withNric(String nric) {","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Zenkoh1"},"content":" this.nric \u003d new Nric(nric);","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" return this;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"brendanng7"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"brendanng7"},"content":" * Sets the {@code CallFrequency} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"brendanng7"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"brendanng7"},"content":" public PersonBuilder withCallFrequency(String callFrequency) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"brendanng7"},"content":" this.callFrequency \u003d new CallFrequency(callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"brendanng7"},"content":" return this;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"brendanng7"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"brendanng7"},"content":" return new Person(nric, name, phone, email, address, tags, callFrequency);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":11,"brendanng7":14,"-":97}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_CALL_FREQUENCY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NRIC;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Zenkoh1"},"content":" sb.append(PREFIX_NRIC + person.getNric().value + \" \");","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"brendanng7"},"content":" sb.append(PREFIX_CALL_FREQUENCY + person.getCallFrequency().value + \" \");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" descriptor.getNric().ifPresent(nric -\u003e sb.append(PREFIX_NRIC).append(nric.value).append(\" \"));","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":2,"brendanng7":4,"-":62}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CALL_FREQUENCY_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"brendanng7"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_CALL_FREQUENCY_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Zenkoh1"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NRIC_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"brendanng7"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Zenkoh1"},"content":" public static final Person ALICE \u003d new PersonBuilder().withNric(\"S5207047C\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Alice Pauline\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zyng233"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Zenkoh1"},"content":" public static final Person BENSON \u003d new PersonBuilder().withNric(\"S0233700B\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Benson Meier\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"zyng233"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"zyng233"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Zenkoh1"},"content":" public static final Person CARL \u003d new PersonBuilder().withNric(\"S6192793Z\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Zenkoh1"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withNric(\"S0589789J\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\").withTags(\"friends\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Zenkoh1"},"content":" public static final Person ELLE \u003d new PersonBuilder().withNric(\"S5674593I\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Zenkoh1"},"content":" public static final Person FIONA \u003d new PersonBuilder().withNric(\"S1092693I\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Zenkoh1"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withNric(\"S8596794J\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Zenkoh1"},"content":" public static final Person HOON \u003d new PersonBuilder().withNric(\"S5594223D\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Zenkoh1"},"content":" public static final Person IDA \u003d new PersonBuilder().withNric(\"S1751126B\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Zenkoh1"},"content":" .withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"brendanng7"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(\"7\").build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Zenkoh1"},"content":" public static final Person AMY \u003d new PersonBuilder().withNric(VALID_NRIC_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Zenkoh1"},"content":" .withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"brendanng7"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(VALID_CALL_FREQUENCY_AMY).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Zenkoh1"},"content":" public static final Person BOB \u003d new PersonBuilder().withNric(VALID_NRIC_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Zenkoh1"},"content":" .withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"brendanng7"},"content":" .withCallFrequency(VALID_CALL_FREQUENCY_BOB).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"Zenkoh1":24,"zyng233":4,"brendanng7":22,"-":54}}] diff --git a/AY2425S1-CS2103T-F14b-3_tp_master/commits.json b/AY2425S1-CS2103T-F14b-3_tp_master/commits.json index 0def9b77..91223d63 100644 --- a/AY2425S1-CS2103T-F14b-3_tp_master/commits.json +++ b/AY2425S1-CS2103T-F14b-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"linette-g":[{"date":"2024-09-24","commitResults":[{"hash":"1abc3a3937542d2bf79dbc715f3835c2fc9ea96f","isMergeCommit":false,"messageTitle":"Update AboutUs for Linette","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":5}}},{"hash":"d7ad478a9335e999c9d06e3db5def178163b1758","isMergeCommit":true,"messageTitle":"Merge pull request #24 from brendanng7/branch-add-aboutus","messageBody":"Update AboutUs for Brendan","fileTypesAndContributionMap":{}},{"hash":"24b222e39e0f7871d698b3529e78d00940f682f5","isMergeCommit":false,"messageTitle":"Update email","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"14479f4ad297a2c238dd67985f382d20f9215b92","isMergeCommit":false,"messageTitle":"Update email in AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"989253feb82de7ab49d86a1391e29b5e61f1e467","isMergeCommit":false,"messageTitle":"Update link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-25","commitResults":[{"hash":"42f14fd98b42836fcb337a10e34ebc60fcc79061","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"cb2191565ee6907867ac23ab0b8fe062a90c5933","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bf769100bf511a33f88a8d913ba49d0e7983a51e","isMergeCommit":false,"messageTitle":"Update mark and delete command to support NRIC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":94,"deletions":21}}},{"hash":"b3cac6bc4e4f0b9a1942304e5e2eb0477e28be1c","isMergeCommit":false,"messageTitle":"Update JavaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":5}}},{"hash":"d804de205bc84df25b53ae251f2f5ceefd2b56f5","isMergeCommit":false,"messageTitle":"Update MarkCommand tests to include NRIC","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":65,"deletions":3}}},{"hash":"f236e6c554f2e48874860b3edc55c71b7d270ce8","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":55,"deletions":10}}},{"hash":"836eededd065c9b5ca10a9f0fb939abb1e7f233d","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into branch-extend-nric","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f21ed093ae8c586b8a240640210996fff64c7d31","isMergeCommit":false,"messageTitle":"Update code style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}},{"hash":"dedd651d412e2d159c86525ae011096ec79cc88b","isMergeCommit":false,"messageTitle":"Update imports to single imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-03","commitResults":[{"hash":"506e491c7c1f8581f38dd72a461bd287e1b4e43f","isMergeCommit":false,"messageTitle":"Update delete command tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}}]},{"date":"2024-10-04","commitResults":[{"hash":"1b9d3a8c5019fe08d1c897585cbbad72ada76cc5","isMergeCommit":false,"messageTitle":"Update EditCommand to support NRIC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":16},"test-code":{"insertions":86,"deletions":8}}}]},{"date":"2024-10-09","commitResults":[{"hash":"7dfcbd72e4d9c023381895d658f63c7e8e5b7a20","isMergeCommit":true,"messageTitle":"Merge pull request #49 from zyng233/add-history-call","messageBody":"Add history call command with NRIC and Index","fileTypesAndContributionMap":{}}]}],"Zenkoh1":[{"date":"2024-09-24","commitResults":[{"hash":"931d00dc64c2d592db8a58010912091e00941e52","isMergeCommit":false,"messageTitle":"Edit AboutUs for Zen","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":6}}},{"hash":"16f47042f0e1c951bcb73e1d035703e4e9f84ab0","isMergeCommit":true,"messageTitle":"Merge pull request #28 from linette-g/branch-aboutus","messageBody":"Update AboutUs for Linette","fileTypesAndContributionMap":{}},{"hash":"7fa2fd0fcba8ef4a63ff34b0de17efc1b0ed2945","isMergeCommit":true,"messageTitle":"Merge pull request #29 from zyng233/add-AboutUs","messageBody":"Update AboutUs for Ziying","fileTypesAndContributionMap":{}},{"hash":"618ca3a99ef60286641fada6401b475729e6adcd","isMergeCommit":true,"messageTitle":"Merge pull request #30 from brendanng7/branch-update-site-wide-settings","messageBody":"Update site wide settings for team F14b-3","fileTypesAndContributionMap":{}}]},{"date":"2024-09-25","commitResults":[{"hash":"d25242f82a29a9d9222ce6ab44911a5692f32f4f","isMergeCommit":true,"messageTitle":"Merge pull request #34 from GabrielCWT/update-developer-guide","messageBody":"Update developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"3dd6b394d92c800645c2d6bfcdfd49c18003438f","isMergeCommit":false,"messageTitle":"Add Nric field to person model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":233,"deletions":45},"test-code":{"insertions":282,"deletions":145}}},{"hash":"630524c0179ff9093d7c4c5960be13a678ad5c74","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1},"test-code":{"insertions":87,"deletions":15}}},{"hash":"f155b355016e7fe340951ef7bef67ec83bcb69d6","isMergeCommit":false,"messageTitle":"Revert some changes from SceneBuilder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":5}}},{"hash":"2801d44eb9e0654a282f22839314430bc6f05dde","isMergeCommit":false,"messageTitle":"Add somemore nric validation tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":0}}},{"hash":"3aff821cc0ba6f2c5b749cfd6616ef796505145f","isMergeCommit":true,"messageTitle":"Merge pull request #36 from GabrielCWT/mark-as-contacted","messageBody":"Implement mark elderly as contacted","fileTypesAndContributionMap":{}},{"hash":"e19cb0715e8b1f4b1b88e076c4ecfc57f7dcf493","isMergeCommit":false,"messageTitle":"Improve code style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":10}}},{"hash":"9461f0a484e36bb865e6724de02185d31f2a31fd","isMergeCommit":true,"messageTitle":"Merge pull request #40 from Zenkoh1/improve-code-style-nric","messageBody":"Improve code style for nric implementation","fileTypesAndContributionMap":{}}]},{"date":"2024-10-08","commitResults":[{"hash":"3bb9e35359a930cb37275da7fc979c4589eded2c","isMergeCommit":false,"messageTitle":"Improve Nric test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"e0126b9520f0af0005fbe00332cd674123025a8e","isMergeCommit":true,"messageTitle":"Merge pull request #51 from Zenkoh1/improve-nric-test-cases","messageBody":"Improve Nric test cases","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"3ef0ff7da87d821bd72396fa73c72f7a0e24187d","isMergeCommit":true,"messageTitle":"Merge pull request #48 from brendanng7/branch-list-sort-priority","messageBody":"Add Call frequency field for branch list sorting in the future","fileTypesAndContributionMap":{}}]}],"GabrielCWT":[{"date":"2024-09-24","commitResults":[{"hash":"e5c72956b75f1e4e2d17b330574b82d6cefcfb7c","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"d043b43275c70bebc3823fcbfe09ccbadfaf709e","isMergeCommit":false,"messageTitle":"Add gabriel\u0027s portfolio","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":44,"deletions":0}}},{"hash":"d2691ff8d48c90a5bca1d6325f576b349430b916","isMergeCommit":true,"messageTitle":"Merge pull request #25 from Zenkoh1/edit-aboutus-zen","messageBody":"Update AboutUs for Zen","fileTypesAndContributionMap":{}},{"hash":"b3ab93d3bc6653571733ae13cf4b3198cd345ae2","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":11}}},{"hash":"7ed84132cd834582ea30a86c49232d963a3deec6","isMergeCommit":false,"messageTitle":"Update value proposition and user profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"9213cf4a3bb74de0e94a199f05a0beb88704cd52","isMergeCommit":false,"messageTitle":"Update user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":7}}}]},{"date":"2024-09-25","commitResults":[{"hash":"0b91794fbe7f116dc75673f48191afa8697f2369","isMergeCommit":false,"messageTitle":"Add use cases, NFR and glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":105,"deletions":22}}},{"hash":"18a19cafd34e5660c6b316694946e85647a19091","isMergeCommit":false,"messageTitle":"Add missing use case ends for use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"99a16c8be5b45e8b513da187d47b8f992732ed9f","isMergeCommit":false,"messageTitle":"Add missing underlines for inclusions","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-09-30","commitResults":[{"hash":"d7065e1b1ebbbf1016ae183c40da5d173fc2beb3","isMergeCommit":false,"messageTitle":"Add mark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":95,"deletions":0}}},{"hash":"713558f351ce379151a3c4a4aeefcbe7f130a0b3","isMergeCommit":false,"messageTitle":"Implement ContactDate and ContactDateList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":115,"deletions":0}}},{"hash":"cfa7426da5e718622be30c53f77cb1e00530a762","isMergeCommit":false,"messageTitle":"Add ContactDateList to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":7}}},{"hash":"15c01bba71c79e0e06b6a4052b922342149a4f5a","isMergeCommit":false,"messageTitle":"Refactor files to accommodate for schema change","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":81,"deletions":2}}},{"hash":"6e6a4466c6e8fc1217ed504d6bee1090e9340e01","isMergeCommit":false,"messageTitle":"Implement GUI for last contacted","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"d97916deaae9f64c65d8c439063efdb918f58410","isMergeCommit":false,"messageTitle":"Fix constructors for ContactDateList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":10}}},{"hash":"53629d56cd478e05d336ab72a823a8ec66bce293","isMergeCommit":false,"messageTitle":"Implement JSON structure for contact dates","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":1}}},{"hash":"dfa0e5f1deddc9c8e2700ec539e6d12c164a9405","isMergeCommit":false,"messageTitle":"Remove contact date from toString","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"a2c7b411aa91ca13a4ed0f60fcbede3d49d85a7b","isMergeCommit":false,"messageTitle":"Fix isValidContactDate validation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1}}},{"hash":"d299e01a651a190a7eecf76b8570acdc2db91d72","isMergeCommit":false,"messageTitle":"Update tests to include contact dates","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":9}}}]},{"date":"2024-10-01","commitResults":[{"hash":"8546f091ecdb592d66957eb65678af1ba9faa7de","isMergeCommit":false,"messageTitle":"Implement MarkCommand tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":143,"deletions":0}}},{"hash":"3e63e4f7f70dae7abd9acaca0dea00dfab3684d5","isMergeCommit":false,"messageTitle":"Implement test for Person markAsContacted","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}},{"hash":"ef49d22c2f7dc71a903836c14274069b4b8ef947","isMergeCommit":false,"messageTitle":"Implement tests for ContactDate and ContactDateList","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":67,"deletions":0}}},{"hash":"88a066008976a27503a6c358a55f083f74005d40","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":2},"test-code":{"insertions":21,"deletions":17}}},{"hash":"ed7ad3bbdcc0d61ba6e52b39a9739f3ec627a2cf","isMergeCommit":false,"messageTitle":"Fix test for markAsContacted","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"01128b86d8aebf358de86384514607b5be19dd6b","isMergeCommit":false,"messageTitle":"Add missing tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"87a22df0c41af4f97350864e90b44f2effbbef4c","isMergeCommit":false,"messageTitle":"Fix list not updated upon marking as contacted","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":0,"deletions":1}}},{"hash":"c5ba2ed57cbf244feda03497f57423c645272070","isMergeCommit":false,"messageTitle":"Add tests for equals method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":7},"test-code":{"insertions":42,"deletions":0}}},{"hash":"86083ce2a1806f2ac23ca0c7ba9918c29a380578","isMergeCommit":false,"messageTitle":"Implement error when accessing empty ContactDateList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0},"test-code":{"insertions":7,"deletions":0}}},{"hash":"4111a1fa6797769cb78ca0aaca79709b64a417f5","isMergeCommit":true,"messageTitle":"Merge pull request #38 from Zenkoh1/add-person-nric","messageBody":"Add person NRIC field","fileTypesAndContributionMap":{}},{"hash":"aefb29376fb668b4668fe7b0409abb4476e7a6a0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into mark-as-contacted","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"15ad4a2f9c64b48f638fb52e1f4512fbd90215a0","isMergeCommit":false,"messageTitle":"Add mark as contact date with date provided","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":9,"deletions":0}}}]},{"date":"2024-10-02","commitResults":[{"hash":"2873295415ccf6268ebc10507522903e7d4a789f","isMergeCommit":false,"messageTitle":"Implement handling of empty list when parsing JSON","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"025fdcab7674cf3719b826ce9de2404d5a251c5b","isMergeCommit":false,"messageTitle":"Implement test for empty contact date list","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}}]},{"date":"2024-10-09","commitResults":[{"hash":"26f3021d5398c351739e55eb58c7eedd72b8b62d","isMergeCommit":false,"messageTitle":"Add notes to the parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":7}}},{"hash":"b0be53d2230057d7b37224cc3bae9c8953093cef","isMergeCommit":false,"messageTitle":"Update functions to accept notes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":17}}},{"hash":"1fe91aed23672b9f4ea62ebb6fb461e88c1508e1","isMergeCommit":false,"messageTitle":"Add notes prefix as static variable","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"00ff0b27914974cf1bcd19de9b533dd63e9e6259","isMergeCommit":false,"messageTitle":"Add notes to JSON helper for ContactDate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":13}}},{"hash":"4eece4474446ddd08d9fe8b9e584844190529da2","isMergeCommit":false,"messageTitle":"Update sample data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"e8ee62804e3d649ab7599377688c7c34e0430152","isMergeCommit":false,"messageTitle":"Implement ContactDateBuilder for testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":56,"deletions":0}}},{"hash":"f88961cea0e8cbc3be846de77b9cd8cca6401f6d","isMergeCommit":false,"messageTitle":"Update tests and use ContactDateBuilder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":72,"deletions":34}}},{"hash":"b2a38dbc66841b6ab9b5998d796474ee4b123dc2","isMergeCommit":false,"messageTitle":"Improve tests for MarkCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"85624dab82c72ef63359ee1a200d9a3863694dbd","isMergeCommit":false,"messageTitle":"Improve tests for MarkCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"23df5d72e4812582e6f7eb515f498eae178aaf61","isMergeCommit":false,"messageTitle":"Implement more tests for ContactDate","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":3}}},{"hash":"12655a80b9f7e2540be3c9ab28316680d0ddd794","isMergeCommit":false,"messageTitle":"Add null check for date in json","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"499441a23b2a3b3bf20096d103220582420cef7a","isMergeCommit":false,"messageTitle":"Implement tests for json ContactDate","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":46,"deletions":0}}},{"hash":"ce02e55716afba5e75abfdef1b5ca1891fa3a375","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into implement-notes","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"515da4494cf5607463627a53646a76716668fb6e","isMergeCommit":false,"messageTitle":"Fix add function for ContactDate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]}],"zyng233":[{"date":"2024-09-24","commitResults":[{"hash":"eb93f87e49f4790a91ac25a9da354a7f19542522","isMergeCommit":false,"messageTitle":"add ziying AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"194bfe9dbed7c2b6ec633c7ec96f0bccd237fce1","isMergeCommit":false,"messageTitle":"change the name of AboutUS","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8afd1e674c1bd3f45fd5cdc25c53f69bee61aad1","isMergeCommit":false,"messageTitle":"change the name of AboutUS","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"cfde96c7e9b8b5d266d4bbe59657b075738f422c","isMergeCommit":false,"messageTitle":"add johndoe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":51}}},{"hash":"4703457f800c621e5d468089ff510a436641b5d9","isMergeCommit":false,"messageTitle":"update the md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f94ac714e9a756d1c801f02918961fbbfe474b8a","isMergeCommit":false,"messageTitle":"update the all md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-09-25","commitResults":[{"hash":"b2a4d50fcc75483db11792e8806355277fa60786","isMergeCommit":false,"messageTitle":"change the name of AboutUS","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-02","commitResults":[{"hash":"e43c6ae58c1fb8f7d53c834934a31e71aa9ca84b","isMergeCommit":true,"messageTitle":"fetch with the upstream","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"8ec66548d987e1502ceab0fadb2919b3ec5d2999","isMergeCommit":true,"messageTitle":"Merge pull request #46 from linette-g/branch-extend-nric","messageBody":"Extend commands to support NRIC","fileTypesAndContributionMap":{}},{"hash":"3b238e62cdd1805f159674ab2955def8ddc6d1f8","isMergeCommit":false,"messageTitle":"Add history command with index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":370,"deletions":9},"test-code":{"insertions":211,"deletions":2}}},{"hash":"c3d7672cd54aeae740f3f109c11f1f7b9582e025","isMergeCommit":true,"messageTitle":"fetch from the upstream to implement history command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"506ee942faaa3b0686e15521d136f38489d65102","isMergeCommit":false,"messageTitle":"update the history command with NRIC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":14},"test-code":{"insertions":150,"deletions":82}}}]},{"date":"2024-10-07","commitResults":[{"hash":"2186a93b3c747c180755e7192757df4328e38503","isMergeCommit":false,"messageTitle":"Update the HistoryCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":3},"test-code":{"insertions":89,"deletions":38}}}]},{"date":"2024-10-08","commitResults":[{"hash":"ea185d12d54d15f7605800411fd159e86af4c264","isMergeCommit":false,"messageTitle":"Add back the EditCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":0}}}]},{"date":"2024-10-09","commitResults":[{"hash":"e2dc73c35e62425edea88536a0ee8e2853e95ccc","isMergeCommit":false,"messageTitle":"Fix the stackPane problem","messageBody":"can switch between personList panel and callHistory panel\n","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":32}}},{"hash":"cd349cf61e1f2d956a84ffbf011f05cd4a3e9a4a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-history-call","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2d0c06aa0ab49822b89f9c79f2fb630c04b186b5","isMergeCommit":false,"messageTitle":"add new line","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"d6fee1d6272a71bdc72bf3607e3ba6df99983886","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-history-call\u0027 of https://github.com/zyng233/tp into add-history-call","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab1c8d8dc2acf98b9f300a70ef9c4218c7df9550","isMergeCommit":false,"messageTitle":"add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"869e03cc173a43a9ce7eae1f5572862166886fc5","isMergeCommit":false,"messageTitle":"add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"88c3bee037449cd59da988071e0a3edb1ec8bd23","isMergeCommit":false,"messageTitle":"removing unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"6d8d993735c58aa40033f01dccbef9109d03a342","isMergeCommit":false,"messageTitle":"adding tests for new created methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":33},"test-code":{"insertions":37,"deletions":0}}},{"hash":"32153b86e0cf28a9fef6dbd18fd3dd7a47a3aa34","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-history-call","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"146c2e120c235e3ed3431bb0c48f6c23fccd4ccf","isMergeCommit":true,"messageTitle":"merge the upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7aa5aa3af086af23a60d76b44eb3c17639f21cf6","isMergeCommit":true,"messageTitle":"merge the upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1cadb5a4fc90227a54a7df188cfdab0223c14833","isMergeCommit":false,"messageTitle":"merge the upstream","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":3,"deletions":2}}},{"hash":"80569e404a806b54120e25b0c13d39b8fde1ce6e","isMergeCommit":false,"messageTitle":"update more test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3},"test-code":{"insertions":3,"deletions":2}}}]}],"brendanng7":[{"date":"2024-09-24","commitResults":[{"hash":"672b9bdb66c8c1f60e9fcd89e80f4d50168700d5","isMergeCommit":false,"messageTitle":"Update AboutUs for Brendan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"a42e261af49f6058965f62fa4a643a255e498c6f","isMergeCommit":false,"messageTitle":"Update AboutUs for Brendan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":4}}},{"hash":"c7f6cf241fb0136f131efd74033b0a73fa62ae19","isMergeCommit":true,"messageTitle":"Merge pull request #23 from GabrielCWT/update-about-us","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"1617de524329c4d2efbd7c4daf0bce6bd2ec11e4","isMergeCommit":false,"messageTitle":"Update site wide settings for team F14b-3","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"05d6200185af9794aeee54e5306d5e6e86fef961","isMergeCommit":true,"messageTitle":"Merge pull request #32 from GabrielCWT/update-readme","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"e23c326af00b07d74f0d0b8020502256ec1c8494","isMergeCommit":true,"messageTitle":"Merge pull request #44 from GabrielCWT/fix-unhandled-empty-list","messageBody":"Implement handling of empty list when parsing JSON","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"d3fcfb484dc8628d832f523f31c7011ade5a997d","isMergeCommit":false,"messageTitle":"Implement CallFrequency","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":0}}},{"hash":"efdb354d5b266966458b4a68451f8434c6e3259e","isMergeCommit":false,"messageTitle":"Add CallFrequency to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":3}}},{"hash":"f1ea6070d40186bb9a139a09757a94ccff9d63f7","isMergeCommit":false,"messageTitle":"Add CallFrequency field to AddCommand and EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":20}}},{"hash":"3e02fe1490dfece625914427690d2b9c0fedde7f","isMergeCommit":false,"messageTitle":"Update logic in parsers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":30}}},{"hash":"fd48e50e3fb4278d745fcbe436d2b8c795c860e9","isMergeCommit":false,"messageTitle":"Update SampleDataUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":12}}},{"hash":"7da55b8a3ea46b2039151162ca7e588efbca0038","isMergeCommit":false,"messageTitle":"Update UI components and Json handler","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":8}}},{"hash":"76dc743d3ae909c89d8f0922209b2847efe461a3","isMergeCommit":false,"messageTitle":"Add more get methods to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":4},"test-code":{"insertions":14,"deletions":8}}}]},{"date":"2024-10-05","commitResults":[{"hash":"2101475cc547b701d2dd892db6e39ba59f8598a8","isMergeCommit":false,"messageTitle":"Update equality for Person to not include call frequency","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"d99e918d854fc99a7277a5e9ed4f586d0806f473","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":142,"deletions":71}}},{"hash":"c912f03cbb56252acd073050365fd50c520aa8ae","isMergeCommit":false,"messageTitle":"Fix on EditCommand\u0027s parse sending error message incorrectly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"7fc0593e12e5d04c175533fa1aabc5baf88c3788","isMergeCommit":false,"messageTitle":"Update remaining test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":35,"deletions":60}}},{"hash":"0a92bb4cc517d715e1d5d4c6608393f0ab0868ba","isMergeCommit":false,"messageTitle":"Add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"026badead32d0a75359d18037211a1ee0070c8ca","isMergeCommit":false,"messageTitle":"Fix code style issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":11},"test-code":{"insertions":109,"deletions":14}}}]},{"date":"2024-10-09","commitResults":[{"hash":"5e91e31e15e489caeb92243450cedc15859d07b8","isMergeCommit":false,"messageTitle":"Update and add test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":3}}},{"hash":"494666387dd19ec4451a6c554dac2b8e7ba4ad66","isMergeCommit":false,"messageTitle":"Fix code style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"3497e5da6ed274c0cc01c4a312d250b7a03c636d","isMergeCommit":true,"messageTitle":"Merge pull request #53 from GabrielCWT/implement-notes","messageBody":"Implement notes field for mark command","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"linette-g":{"docs":52,"functional-code":164,"test-code":203},"Zenkoh1":{"docs":52,"functional-code":206,"test-code":254},"GabrielCWT":{"docs":201,"functional-code":407,"test-code":497},"zyng233":{"docs":4,"functional-code":362,"test-code":335},"brendanng7":{"docs":50,"functional-code":186,"test-code":220,"other":3}},"authorContributionVariance":{"linette-g":5242.4873,"Zenkoh1":33570.086,"GabrielCWT":19067.088,"zyng233":36519.96,"brendanng7":15875.628},"authorDisplayNameMap":{"linette-g":"CS2103T-F14b-3 LINE.. GOH","Zenkoh1":"CS2103T-F14b-3 ZEN .. KOH","GabrielCWT":"CS2103T-F14b-3 CHAN..RIEL","zyng233":"CS2103T-F14b-3 TAN ..YING","brendanng7":"CS2103T-F14b-3 BREN..GJIE"}} +{"authorDailyContributionsMap":{"linette-g":[{"date":"2024-09-24","commitResults":[{"hash":"1abc3a3937542d2bf79dbc715f3835c2fc9ea96f","isMergeCommit":false,"messageTitle":"Update AboutUs for Linette","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":5}}},{"hash":"d7ad478a9335e999c9d06e3db5def178163b1758","isMergeCommit":true,"messageTitle":"Merge pull request #24 from brendanng7/branch-add-aboutus","messageBody":"Update AboutUs for Brendan","fileTypesAndContributionMap":{}},{"hash":"24b222e39e0f7871d698b3529e78d00940f682f5","isMergeCommit":false,"messageTitle":"Update email","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"14479f4ad297a2c238dd67985f382d20f9215b92","isMergeCommit":false,"messageTitle":"Update email in AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"989253feb82de7ab49d86a1391e29b5e61f1e467","isMergeCommit":false,"messageTitle":"Update link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-25","commitResults":[{"hash":"42f14fd98b42836fcb337a10e34ebc60fcc79061","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"cb2191565ee6907867ac23ab0b8fe062a90c5933","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bf769100bf511a33f88a8d913ba49d0e7983a51e","isMergeCommit":false,"messageTitle":"Update mark and delete command to support NRIC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":94,"deletions":21}}},{"hash":"b3cac6bc4e4f0b9a1942304e5e2eb0477e28be1c","isMergeCommit":false,"messageTitle":"Update JavaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":5}}},{"hash":"d804de205bc84df25b53ae251f2f5ceefd2b56f5","isMergeCommit":false,"messageTitle":"Update MarkCommand tests to include NRIC","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":65,"deletions":3}}},{"hash":"f236e6c554f2e48874860b3edc55c71b7d270ce8","isMergeCommit":false,"messageTitle":"Update tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":55,"deletions":10}}},{"hash":"836eededd065c9b5ca10a9f0fb939abb1e7f233d","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into branch-extend-nric","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"f21ed093ae8c586b8a240640210996fff64c7d31","isMergeCommit":false,"messageTitle":"Update code style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}},{"hash":"dedd651d412e2d159c86525ae011096ec79cc88b","isMergeCommit":false,"messageTitle":"Update imports to single imports","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-03","commitResults":[{"hash":"506e491c7c1f8581f38dd72a461bd287e1b4e43f","isMergeCommit":false,"messageTitle":"Update delete command tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":0}}}]},{"date":"2024-10-04","commitResults":[{"hash":"1b9d3a8c5019fe08d1c897585cbbad72ada76cc5","isMergeCommit":false,"messageTitle":"Update EditCommand to support NRIC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":16},"test-code":{"insertions":86,"deletions":8}}}]},{"date":"2024-10-09","commitResults":[{"hash":"7dfcbd72e4d9c023381895d658f63c7e8e5b7a20","isMergeCommit":true,"messageTitle":"Merge pull request #49 from zyng233/add-history-call","messageBody":"Add history call command with NRIC and Index","fileTypesAndContributionMap":{}}]}],"Zenkoh1":[{"date":"2024-09-24","commitResults":[{"hash":"931d00dc64c2d592db8a58010912091e00941e52","isMergeCommit":false,"messageTitle":"Edit AboutUs for Zen","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":6}}},{"hash":"16f47042f0e1c951bcb73e1d035703e4e9f84ab0","isMergeCommit":true,"messageTitle":"Merge pull request #28 from linette-g/branch-aboutus","messageBody":"Update AboutUs for Linette","fileTypesAndContributionMap":{}},{"hash":"7fa2fd0fcba8ef4a63ff34b0de17efc1b0ed2945","isMergeCommit":true,"messageTitle":"Merge pull request #29 from zyng233/add-AboutUs","messageBody":"Update AboutUs for Ziying","fileTypesAndContributionMap":{}},{"hash":"618ca3a99ef60286641fada6401b475729e6adcd","isMergeCommit":true,"messageTitle":"Merge pull request #30 from brendanng7/branch-update-site-wide-settings","messageBody":"Update site wide settings for team F14b-3","fileTypesAndContributionMap":{}}]},{"date":"2024-09-25","commitResults":[{"hash":"d25242f82a29a9d9222ce6ab44911a5692f32f4f","isMergeCommit":true,"messageTitle":"Merge pull request #34 from GabrielCWT/update-developer-guide","messageBody":"Update developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"3dd6b394d92c800645c2d6bfcdfd49c18003438f","isMergeCommit":false,"messageTitle":"Add Nric field to person model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":233,"deletions":45},"test-code":{"insertions":282,"deletions":145}}},{"hash":"630524c0179ff9093d7c4c5960be13a678ad5c74","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":1},"test-code":{"insertions":87,"deletions":15}}},{"hash":"f155b355016e7fe340951ef7bef67ec83bcb69d6","isMergeCommit":false,"messageTitle":"Revert some changes from SceneBuilder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":5}}},{"hash":"2801d44eb9e0654a282f22839314430bc6f05dde","isMergeCommit":false,"messageTitle":"Add somemore nric validation tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":0}}},{"hash":"3aff821cc0ba6f2c5b749cfd6616ef796505145f","isMergeCommit":true,"messageTitle":"Merge pull request #36 from GabrielCWT/mark-as-contacted","messageBody":"Implement mark elderly as contacted","fileTypesAndContributionMap":{}},{"hash":"e19cb0715e8b1f4b1b88e076c4ecfc57f7dcf493","isMergeCommit":false,"messageTitle":"Improve code style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":10}}},{"hash":"9461f0a484e36bb865e6724de02185d31f2a31fd","isMergeCommit":true,"messageTitle":"Merge pull request #40 from Zenkoh1/improve-code-style-nric","messageBody":"Improve code style for nric implementation","fileTypesAndContributionMap":{}}]},{"date":"2024-10-08","commitResults":[{"hash":"3bb9e35359a930cb37275da7fc979c4589eded2c","isMergeCommit":false,"messageTitle":"Improve Nric test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"e0126b9520f0af0005fbe00332cd674123025a8e","isMergeCommit":true,"messageTitle":"Merge pull request #51 from Zenkoh1/improve-nric-test-cases","messageBody":"Improve Nric test cases","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"3ef0ff7da87d821bd72396fa73c72f7a0e24187d","isMergeCommit":true,"messageTitle":"Merge pull request #48 from brendanng7/branch-list-sort-priority","messageBody":"Add Call frequency field for branch list sorting in the future","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"ccd6700d5e147d4b66b29a3c0b16735921dfc253","isMergeCommit":false,"messageTitle":"Add similar persons functionality","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":121,"deletions":4},"test-code":{"insertions":217,"deletions":1}}},{"hash":"a601385982de3a9cd146d2af9d2cf0fb8ee2f7b5","isMergeCommit":false,"messageTitle":"Touch up on JavaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"180978b1a142d23a33c8eb02320e058d245df121","isMergeCommit":false,"messageTitle":"Add more to JavaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":0}}},{"hash":"f209de1cf78aedf617e6ee3adcfc0eb59ca69261","isMergeCommit":false,"messageTitle":"Clean up code","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}}]}],"GabrielCWT":[{"date":"2024-09-24","commitResults":[{"hash":"e5c72956b75f1e4e2d17b330574b82d6cefcfb7c","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"d043b43275c70bebc3823fcbfe09ccbadfaf709e","isMergeCommit":false,"messageTitle":"Add gabriel\u0027s portfolio","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":44,"deletions":0}}},{"hash":"d2691ff8d48c90a5bca1d6325f576b349430b916","isMergeCommit":true,"messageTitle":"Merge pull request #25 from Zenkoh1/edit-aboutus-zen","messageBody":"Update AboutUs for Zen","fileTypesAndContributionMap":{}},{"hash":"b3ab93d3bc6653571733ae13cf4b3198cd345ae2","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":11}}},{"hash":"7ed84132cd834582ea30a86c49232d963a3deec6","isMergeCommit":false,"messageTitle":"Update value proposition and user profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"9213cf4a3bb74de0e94a199f05a0beb88704cd52","isMergeCommit":false,"messageTitle":"Update user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":7}}}]},{"date":"2024-09-25","commitResults":[{"hash":"0b91794fbe7f116dc75673f48191afa8697f2369","isMergeCommit":false,"messageTitle":"Add use cases, NFR and glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":105,"deletions":22}}},{"hash":"18a19cafd34e5660c6b316694946e85647a19091","isMergeCommit":false,"messageTitle":"Add missing use case ends for use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"99a16c8be5b45e8b513da187d47b8f992732ed9f","isMergeCommit":false,"messageTitle":"Add missing underlines for inclusions","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}}]},{"date":"2024-09-30","commitResults":[{"hash":"d7065e1b1ebbbf1016ae183c40da5d173fc2beb3","isMergeCommit":false,"messageTitle":"Add mark command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":95,"deletions":0}}},{"hash":"713558f351ce379151a3c4a4aeefcbe7f130a0b3","isMergeCommit":false,"messageTitle":"Implement ContactDate and ContactDateList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":115,"deletions":0}}},{"hash":"cfa7426da5e718622be30c53f77cb1e00530a762","isMergeCommit":false,"messageTitle":"Add ContactDateList to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":35,"deletions":7}}},{"hash":"15c01bba71c79e0e06b6a4052b922342149a4f5a","isMergeCommit":false,"messageTitle":"Refactor files to accommodate for schema change","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":81,"deletions":2}}},{"hash":"6e6a4466c6e8fc1217ed504d6bee1090e9340e01","isMergeCommit":false,"messageTitle":"Implement GUI for last contacted","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"d97916deaae9f64c65d8c439063efdb918f58410","isMergeCommit":false,"messageTitle":"Fix constructors for ContactDateList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":10}}},{"hash":"53629d56cd478e05d336ab72a823a8ec66bce293","isMergeCommit":false,"messageTitle":"Implement JSON structure for contact dates","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":1}}},{"hash":"dfa0e5f1deddc9c8e2700ec539e6d12c164a9405","isMergeCommit":false,"messageTitle":"Remove contact date from toString","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"a2c7b411aa91ca13a4ed0f60fcbede3d49d85a7b","isMergeCommit":false,"messageTitle":"Fix isValidContactDate validation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":1}}},{"hash":"d299e01a651a190a7eecf76b8570acdc2db91d72","isMergeCommit":false,"messageTitle":"Update tests to include contact dates","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":9}}}]},{"date":"2024-10-01","commitResults":[{"hash":"8546f091ecdb592d66957eb65678af1ba9faa7de","isMergeCommit":false,"messageTitle":"Implement MarkCommand tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":143,"deletions":0}}},{"hash":"3e63e4f7f70dae7abd9acaca0dea00dfab3684d5","isMergeCommit":false,"messageTitle":"Implement test for Person markAsContacted","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}},{"hash":"ef49d22c2f7dc71a903836c14274069b4b8ef947","isMergeCommit":false,"messageTitle":"Implement tests for ContactDate and ContactDateList","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":67,"deletions":0}}},{"hash":"88a066008976a27503a6c358a55f083f74005d40","isMergeCommit":false,"messageTitle":"Fix formatting","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":2},"test-code":{"insertions":21,"deletions":17}}},{"hash":"ed7ad3bbdcc0d61ba6e52b39a9739f3ec627a2cf","isMergeCommit":false,"messageTitle":"Fix test for markAsContacted","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"01128b86d8aebf358de86384514607b5be19dd6b","isMergeCommit":false,"messageTitle":"Add missing tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"87a22df0c41af4f97350864e90b44f2effbbef4c","isMergeCommit":false,"messageTitle":"Fix list not updated upon marking as contacted","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0},"test-code":{"insertions":0,"deletions":1}}},{"hash":"c5ba2ed57cbf244feda03497f57423c645272070","isMergeCommit":false,"messageTitle":"Add tests for equals method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":7},"test-code":{"insertions":42,"deletions":0}}},{"hash":"86083ce2a1806f2ac23ca0c7ba9918c29a380578","isMergeCommit":false,"messageTitle":"Implement error when accessing empty ContactDateList","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0},"test-code":{"insertions":7,"deletions":0}}},{"hash":"4111a1fa6797769cb78ca0aaca79709b64a417f5","isMergeCommit":true,"messageTitle":"Merge pull request #38 from Zenkoh1/add-person-nric","messageBody":"Add person NRIC field","fileTypesAndContributionMap":{}},{"hash":"aefb29376fb668b4668fe7b0409abb4476e7a6a0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into mark-as-contacted","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"15ad4a2f9c64b48f638fb52e1f4512fbd90215a0","isMergeCommit":false,"messageTitle":"Add mark as contact date with date provided","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":9,"deletions":0}}}]},{"date":"2024-10-02","commitResults":[{"hash":"2873295415ccf6268ebc10507522903e7d4a789f","isMergeCommit":false,"messageTitle":"Implement handling of empty list when parsing JSON","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"025fdcab7674cf3719b826ce9de2404d5a251c5b","isMergeCommit":false,"messageTitle":"Implement test for empty contact date list","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":9,"deletions":0}}}]},{"date":"2024-10-09","commitResults":[{"hash":"26f3021d5398c351739e55eb58c7eedd72b8b62d","isMergeCommit":false,"messageTitle":"Add notes to the parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":7}}},{"hash":"b0be53d2230057d7b37224cc3bae9c8953093cef","isMergeCommit":false,"messageTitle":"Update functions to accept notes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":17}}},{"hash":"1fe91aed23672b9f4ea62ebb6fb461e88c1508e1","isMergeCommit":false,"messageTitle":"Add notes prefix as static variable","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"00ff0b27914974cf1bcd19de9b533dd63e9e6259","isMergeCommit":false,"messageTitle":"Add notes to JSON helper for ContactDate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":13}}},{"hash":"4eece4474446ddd08d9fe8b9e584844190529da2","isMergeCommit":false,"messageTitle":"Update sample data","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":6}}},{"hash":"e8ee62804e3d649ab7599377688c7c34e0430152","isMergeCommit":false,"messageTitle":"Implement ContactDateBuilder for testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":56,"deletions":0}}},{"hash":"f88961cea0e8cbc3be846de77b9cd8cca6401f6d","isMergeCommit":false,"messageTitle":"Update tests and use ContactDateBuilder","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":72,"deletions":34}}},{"hash":"b2a38dbc66841b6ab9b5998d796474ee4b123dc2","isMergeCommit":false,"messageTitle":"Improve tests for MarkCommand","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":0}}},{"hash":"85624dab82c72ef63359ee1a200d9a3863694dbd","isMergeCommit":false,"messageTitle":"Improve tests for MarkCommandParser","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"23df5d72e4812582e6f7eb515f498eae178aaf61","isMergeCommit":false,"messageTitle":"Implement more tests for ContactDate","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":20,"deletions":3}}},{"hash":"12655a80b9f7e2540be3c9ab28316680d0ddd794","isMergeCommit":false,"messageTitle":"Add null check for date in json","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"499441a23b2a3b3bf20096d103220582420cef7a","isMergeCommit":false,"messageTitle":"Implement tests for json ContactDate","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":46,"deletions":0}}},{"hash":"ce02e55716afba5e75abfdef1b5ca1891fa3a375","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into implement-notes","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"515da4494cf5607463627a53646a76716668fb6e","isMergeCommit":false,"messageTitle":"Fix add function for ContactDate","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-12","commitResults":[{"hash":"702e6c49baed8258dea5239f5a530fffe8e1777f","isMergeCommit":true,"messageTitle":"Merge pull request #59 from Zenkoh1/soft-check-duplicates","messageBody":"Implement soft check for duplicate people","fileTypesAndContributionMap":{}}]}],"zyng233":[{"date":"2024-09-24","commitResults":[{"hash":"eb93f87e49f4790a91ac25a9da354a7f19542522","isMergeCommit":false,"messageTitle":"add ziying AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":7}}},{"hash":"194bfe9dbed7c2b6ec633c7ec96f0bccd237fce1","isMergeCommit":false,"messageTitle":"change the name of AboutUS","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8afd1e674c1bd3f45fd5cdc25c53f69bee61aad1","isMergeCommit":false,"messageTitle":"change the name of AboutUS","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"cfde96c7e9b8b5d266d4bbe59657b075738f422c","isMergeCommit":false,"messageTitle":"add johndoe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":51}}},{"hash":"4703457f800c621e5d468089ff510a436641b5d9","isMergeCommit":false,"messageTitle":"update the md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"f94ac714e9a756d1c801f02918961fbbfe474b8a","isMergeCommit":false,"messageTitle":"update the all md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-09-25","commitResults":[{"hash":"b2a4d50fcc75483db11792e8806355277fa60786","isMergeCommit":false,"messageTitle":"change the name of AboutUS","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-02","commitResults":[{"hash":"e43c6ae58c1fb8f7d53c834934a31e71aa9ca84b","isMergeCommit":true,"messageTitle":"fetch with the upstream","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"8ec66548d987e1502ceab0fadb2919b3ec5d2999","isMergeCommit":true,"messageTitle":"Merge pull request #46 from linette-g/branch-extend-nric","messageBody":"Extend commands to support NRIC","fileTypesAndContributionMap":{}},{"hash":"3b238e62cdd1805f159674ab2955def8ddc6d1f8","isMergeCommit":false,"messageTitle":"Add history command with index","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":370,"deletions":9},"test-code":{"insertions":211,"deletions":2}}},{"hash":"c3d7672cd54aeae740f3f109c11f1f7b9582e025","isMergeCommit":true,"messageTitle":"fetch from the upstream to implement history command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"506ee942faaa3b0686e15521d136f38489d65102","isMergeCommit":false,"messageTitle":"update the history command with NRIC","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":30,"deletions":14},"test-code":{"insertions":150,"deletions":82}}}]},{"date":"2024-10-07","commitResults":[{"hash":"2186a93b3c747c180755e7192757df4328e38503","isMergeCommit":false,"messageTitle":"Update the HistoryCommandTest","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":3},"test-code":{"insertions":89,"deletions":38}}}]},{"date":"2024-10-08","commitResults":[{"hash":"ea185d12d54d15f7605800411fd159e86af4c264","isMergeCommit":false,"messageTitle":"Add back the EditCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":16,"deletions":0}}}]},{"date":"2024-10-09","commitResults":[{"hash":"e2dc73c35e62425edea88536a0ee8e2853e95ccc","isMergeCommit":false,"messageTitle":"Fix the stackPane problem","messageBody":"can switch between personList panel and callHistory panel\n","fileTypesAndContributionMap":{"functional-code":{"insertions":25,"deletions":32}}},{"hash":"cd349cf61e1f2d956a84ffbf011f05cd4a3e9a4a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-history-call","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2d0c06aa0ab49822b89f9c79f2fb630c04b186b5","isMergeCommit":false,"messageTitle":"add new line","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"d6fee1d6272a71bdc72bf3607e3ba6df99983886","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-history-call\u0027 of https://github.com/zyng233/tp into add-history-call","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ab1c8d8dc2acf98b9f300a70ef9c4218c7df9550","isMergeCommit":false,"messageTitle":"add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"869e03cc173a43a9ce7eae1f5572862166886fc5","isMergeCommit":false,"messageTitle":"add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"88c3bee037449cd59da988071e0a3edb1ec8bd23","isMergeCommit":false,"messageTitle":"removing unused import","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"6d8d993735c58aa40033f01dccbef9109d03a342","isMergeCommit":false,"messageTitle":"adding tests for new created methods","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":33},"test-code":{"insertions":37,"deletions":0}}},{"hash":"32153b86e0cf28a9fef6dbd18fd3dd7a47a3aa34","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-history-call","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"146c2e120c235e3ed3431bb0c48f6c23fccd4ccf","isMergeCommit":true,"messageTitle":"merge the upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7aa5aa3af086af23a60d76b44eb3c17639f21cf6","isMergeCommit":true,"messageTitle":"merge the upstream","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"1cadb5a4fc90227a54a7df188cfdab0223c14833","isMergeCommit":false,"messageTitle":"merge the upstream","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":3,"deletions":2}}},{"hash":"80569e404a806b54120e25b0c13d39b8fde1ce6e","isMergeCommit":false,"messageTitle":"update more test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":3},"test-code":{"insertions":3,"deletions":2}}}]}],"brendanng7":[{"date":"2024-09-24","commitResults":[{"hash":"672b9bdb66c8c1f60e9fcd89e80f4d50168700d5","isMergeCommit":false,"messageTitle":"Update AboutUs for Brendan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"a42e261af49f6058965f62fa4a643a255e498c6f","isMergeCommit":false,"messageTitle":"Update AboutUs for Brendan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":4}}},{"hash":"c7f6cf241fb0136f131efd74033b0a73fa62ae19","isMergeCommit":true,"messageTitle":"Merge pull request #23 from GabrielCWT/update-about-us","messageBody":"Update AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"1617de524329c4d2efbd7c4daf0bce6bd2ec11e4","isMergeCommit":false,"messageTitle":"Update site wide settings for team F14b-3","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"05d6200185af9794aeee54e5306d5e6e86fef961","isMergeCommit":true,"messageTitle":"Merge pull request #32 from GabrielCWT/update-readme","messageBody":"Update README.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"e23c326af00b07d74f0d0b8020502256ec1c8494","isMergeCommit":true,"messageTitle":"Merge pull request #44 from GabrielCWT/fix-unhandled-empty-list","messageBody":"Implement handling of empty list when parsing JSON","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"d3fcfb484dc8628d832f523f31c7011ade5a997d","isMergeCommit":false,"messageTitle":"Implement CallFrequency","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":0}}},{"hash":"efdb354d5b266966458b4a68451f8434c6e3259e","isMergeCommit":false,"messageTitle":"Add CallFrequency to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":3}}},{"hash":"f1ea6070d40186bb9a139a09757a94ccff9d63f7","isMergeCommit":false,"messageTitle":"Add CallFrequency field to AddCommand and EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":20}}},{"hash":"3e02fe1490dfece625914427690d2b9c0fedde7f","isMergeCommit":false,"messageTitle":"Update logic in parsers","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":39,"deletions":30}}},{"hash":"fd48e50e3fb4278d745fcbe436d2b8c795c860e9","isMergeCommit":false,"messageTitle":"Update SampleDataUtil.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":12}}},{"hash":"7da55b8a3ea46b2039151162ca7e588efbca0038","isMergeCommit":false,"messageTitle":"Update UI components and Json handler","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":8}}},{"hash":"76dc743d3ae909c89d8f0922209b2847efe461a3","isMergeCommit":false,"messageTitle":"Add more get methods to Person","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":4},"test-code":{"insertions":14,"deletions":8}}}]},{"date":"2024-10-05","commitResults":[{"hash":"2101475cc547b701d2dd892db6e39ba59f8598a8","isMergeCommit":false,"messageTitle":"Update equality for Person to not include call frequency","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"d99e918d854fc99a7277a5e9ed4f586d0806f473","isMergeCommit":false,"messageTitle":"Update test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":142,"deletions":71}}},{"hash":"c912f03cbb56252acd073050365fd50c520aa8ae","isMergeCommit":false,"messageTitle":"Fix on EditCommand\u0027s parse sending error message incorrectly","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"7fc0593e12e5d04c175533fa1aabc5baf88c3788","isMergeCommit":false,"messageTitle":"Update remaining test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":35,"deletions":60}}},{"hash":"0a92bb4cc517d715e1d5d4c6608393f0ab0868ba","isMergeCommit":false,"messageTitle":"Add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"026badead32d0a75359d18037211a1ee0070c8ca","isMergeCommit":false,"messageTitle":"Fix code style issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":69,"deletions":11},"test-code":{"insertions":109,"deletions":14}}}]},{"date":"2024-10-09","commitResults":[{"hash":"5e91e31e15e489caeb92243450cedc15859d07b8","isMergeCommit":false,"messageTitle":"Update and add test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":22,"deletions":3}}},{"hash":"494666387dd19ec4451a6c554dac2b8e7ba4ad66","isMergeCommit":false,"messageTitle":"Fix code style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":1}}},{"hash":"3497e5da6ed274c0cc01c4a312d250b7a03c636d","isMergeCommit":true,"messageTitle":"Merge pull request #53 from GabrielCWT/implement-notes","messageBody":"Implement notes field for mark command","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"linette-g":{"docs":52,"functional-code":164,"test-code":201},"Zenkoh1":{"docs":52,"functional-code":334,"test-code":468},"GabrielCWT":{"docs":201,"functional-code":407,"test-code":497},"zyng233":{"docs":4,"functional-code":362,"test-code":335},"brendanng7":{"docs":50,"functional-code":185,"test-code":220,"other":3}},"authorContributionVariance":{"linette-g":4642.9077,"Zenkoh1":33502.47,"GabrielCWT":17163.982,"zyng233":32253.55,"brendanng7":14031.015},"authorDisplayNameMap":{"linette-g":"CS2103T-F14b-3 LINE.. GOH","Zenkoh1":"CS2103T-F14b-3 ZEN .. KOH","GabrielCWT":"CS2103T-F14b-3 CHAN..RIEL","zyng233":"CS2103T-F14b-3 TAN ..YING","brendanng7":"CS2103T-F14b-3 BREN..GJIE"}} diff --git a/AY2425S1-CS2103T-F14b-4_tp_master/authorship.json b/AY2425S1-CS2103T-F14b-4_tp_master/authorship.json index 7daee88e..fb4f9483 100644 --- a/AY2425S1-CS2103T-F14b-4_tp_master/authorship.json +++ b/AY2425S1-CS2103T-F14b-4_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"fymbc"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F14b-4/tp/actions)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"fymbc"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-F14b-4/tp/graph/badge.svg?token\u003d33G8N0D437)](https://codecov.io/gh/AY2425S1-CS2103T-F14b-4/tp)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"fymbc"},"content":"# Financial Advisors Revolutionary Telemarketer","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"fymbc"},"content":"This product is for Financial Advisors who engage frequently or specialise primarily in client outreach.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"fymbc"},"content":"## Features","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"fymbc"},"content":"Our product:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":"* Allows advisors to keep track of who they have and have not contacted recently","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"fymbc"},"content":"* Sorts clients based on various categories and allow advisors to filter by these categories","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"fymbc"},"content":"* Automates the process of sending an automatic reminder to the advisor if a client has not been contacted in a while","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"fymbc"},"content":"* For the detailed documentation of this project, please see the **[F.A.R.T. Product Website](https://ay2425s1-cs2103t-f14b-4.github.io/tp/)**.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":"## Credits","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"fymbc"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"fymbc":16,"-":3}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg).","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"AlphaPyke"},"content":"### Lim Qiao Yi","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"meatyturtle"},"content":"\u003cimg src\u003d\"images/meatyturtle.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"meatyturtle"},"content":"[[github](https://github.com/meatyturtle)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"meatyturtle"},"content":"[[linkedin](https://linkedin.com/limqiaoyi)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"meatyturtle"},"content":"* Role: Developer","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"meatyturtle"},"content":"* Responsibility: Integration","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Shantaa"},"content":"### Shane Tay","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Shantaa"},"content":"\u003cimg src\u003d\"images/shantaa.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Shantaa"},"content":"[[github](http://github.com/shantaa)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Shantaa"},"content":"* Role: Documentation","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Shantaa"},"content":"* Responsibilities: Responsible for the quality of various project documents.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Justin-Aw46"},"content":"### Justin Aw","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Justin-Aw46"},"content":"\u003cimg src\u003d\"images/justin-aw46.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Justin-Aw46"},"content":"[[github](http://github.com/Justin-Aw46)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Justin-Aw46"},"content":"* Responsibilities: Testing","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"AlphaPyke"},"content":"### Joshua Ng","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"AlphaPyke"},"content":"\u003cimg src\u003d\"images/alphapyke.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"AlphaPyke"},"content":"[[github](http://github.com/AlphaPyke)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"AlphaPyke"},"content":"* Role: Code Quality","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"AlphaPyke"},"content":"* Responsibilities: Looks after code quality, ensures adherence to coding standards and git standards.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"fymbc"},"content":"### Tiew Wei Xuan","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"fymbc"},"content":"\u003cimg src\u003d\"images/fymbc.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"fymbc"},"content":"[[github](http://github.com/fymbc)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"fymbc"},"content":"* Role: Team Lead","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"fymbc"},"content":"* Responsibilities: Scheduling, Tracking, Deliverables, Deadlines","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"meatyturtle":5,"Justin-Aw46":4,"AlphaPyke":6,"-":31,"Shantaa":5,"fymbc":5}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"Shantaa"},"content":"* Financial advisors who frequently or specialise primarily in client outreach","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"Shantaa"},"content":"**Value proposition**:","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"Shantaa"},"content":"* manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"Shantaa"},"content":"* Keep track of who has and has not been contacted recently","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"Shantaa"},"content":"* Sort clients based on various categories","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"Shantaa"},"content":"* Filter for clients by above categories","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"Shantaa"},"content":"* ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"Shantaa"},"content":"|----------|----------------------------------------------------|----------------------------------------------------------------------------|----------------------------------------------------------|","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"Shantaa"},"content":"| `*` | Forgetful Financial Advisor | Have a quick view of the contacts I need to contact | Keep track of them without using my own memory |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"Shantaa"},"content":"| `**` | Financial Advisor with many clients | Note who I have contacted and have not contacted in a specific time period | Contact those who I have not reached out to recently |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"Shantaa"},"content":"| `**` | Financial Advisor with many clients | Keep a template of catch-up messages to send to clients | Efficiently send messages to clients when necessary |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"Shantaa"},"content":"| `*` | Freshly registered Financial Advisor | Import contacts from my phone via CSV file | Have a starting list of contacts to work with |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"Shantaa"},"content":"| `**` | Forgetful Financial Advisor | Have automated reminders when I have not contacted a client in a while | Be reminded to catch up with them |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"Shantaa"},"content":"| `***` | Financial Advisor who just met someone new | Add contacts | Have the contact in my list |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"Shantaa"},"content":"| `***` | Retiring Financial Advisor | Delete contacts | Get rid of contacts that are no longer useful |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"Shantaa"},"content":"| `*` | Organised Financial Advisor | Create folders to group contacts under predetermined/self-created groups | Sort my contacts accordingly |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"Shantaa"},"content":"| `**` | Meticulous Financial Advisor | Edit contact details | Update when their details as necessary |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"Shantaa"},"content":"| `***` | Meticulous Financial Advisor | Assign tags to my contacts | Easily sort my contacts by certain tags |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"Shantaa"},"content":"| `**` | Financial Advisor who woke up with someone in mind | Filter my contacts based on attributes | Find that one contact quickly |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Shantaa"},"content":"| `*` | Meticulous Financial Advisor | Add clients’ policies to their contact | Keep track of what policies the client is under |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"Shantaa"},"content":"| `***` | Financially Struggling Financial Advisor | Keep track of which clients have made payments | Keep track of commissions |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"Shantaa"},"content":"| `**` | Boomer Financial Advisor | Run through a tutorial on how to use the app | Understand how the functions work |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"Shantaa"},"content":"| `*` | Financial Advisor who just downloaded the app | See sample data | See how a populated version of the app will look like |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"Shantaa"},"content":"| `*` | Meticulous Financial Advisor | Upload copies of clients’ PDF policies to their contact | Keep record of clients’ contracts for easy reference |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"Shantaa"},"content":"| `**` | Financial Advisor who is being chased by his boss | Add reminders on when clients\u0027 contracts need to be renewed | Ensure clients are always up to date on their contracts |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"Shantaa"},"content":"| `*` | Financial Advisor who just downloaded the app | Delete sample/dummy data | Start using the app in a fresh state |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"Shantaa"},"content":"| `*` | Financial Advisor with many clients | Add profile pictures to my clients | Recognize my clients when I meet them in person |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"Shantaa"},"content":"| `*` | Financial Advisor who does his job too well | Attach my clients\u0027 likes/dislikes | Connect with them on a more personal level |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"Shantaa"},"content":"| `***` | Lost Financial Advisor | See a help page of all commands | Refer back to the page anytime I forget the instructions |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"Shantaa"},"content":"| `***` | Forgetful Financial Advisor | See all my contacts | View my entire contact list |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"Shantaa"},"content":"**Use case: Add a contact**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"Shantaa"},"content":"1. User requests to add a new contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"Shantaa"},"content":"2. AddressBook adds new contact and shows a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"Shantaa"},"content":"* 1a. AddressBook detects an error in the provided details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"Shantaa"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"Shantaa"},"content":"* 1a. AddressBook detects the existence of a duplicate contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"Shantaa"},"content":" * 1a1. AddressBook requests for confirmation to add new contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"Shantaa"},"content":" * 1a1a1. User confirms.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"Shantaa"},"content":" * 1a1a2. AddressBook adds the new contact and displays a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"Shantaa"},"content":" * 1a1b1. User declines.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"Shantaa"},"content":" * 1a1b2. AddressBook displays a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"Shantaa"},"content":"**Use case: Find a contact**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"Shantaa"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"Shantaa"},"content":"1. User requests to find a contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"Shantaa"},"content":"2. AddressBook shows a list of related contacts.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"Shantaa"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"Shantaa"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"Shantaa"},"content":"**Use case: Mark a contact as paid or unpaid**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Shantaa"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Shantaa"},"content":"1. User requests to mark or unmark a contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"Shantaa"},"content":"2. AddressBook marks or unmarks contact and shows a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"Shantaa"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"Shantaa"},"content":"* 1a. The given index is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Shantaa"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Shantaa"},"content":"**Use case: Delete a contact**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Shantaa"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"Shantaa"},"content":"1. User requests to delete a contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"Shantaa"},"content":"2. AddressBook requests confirmation.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"Shantaa"},"content":"3. User confirms.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"Shantaa"},"content":"4. AddressBook deletes the contact and shows a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"Shantaa"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"Shantaa"},"content":"* 1a. The given index is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"Shantaa"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"Shantaa"},"content":"* 2a. User declines.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"Shantaa"},"content":" * AddressBook shows a confirmation meesage.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"meatyturtle"},"content":"2. Should work without the usage of an external database.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"meatyturtle"},"content":"3. Should work without any connection to a remote server or use of any cloud computing service.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"meatyturtle"},"content":"4. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"meatyturtle"},"content":"5. The system should be able to handle storage of over 1000 contacts without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"meatyturtle"},"content":"6. The product is not required to have its own messaging service.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"meatyturtle"},"content":"7. Queries to the system (find, list, paid etc.) should be responded to within 3 seconds.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"meatyturtle"},"content":"8. The product should not use any images / comments / jokes deemed offensive to Financial Advisors.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"meatyturtle"},"content":"9. The system should be usable by a novice with basic command-line knowledge.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"meatyturtle"},"content":"10. Any lists or iterables should be 1-indexed assuming the user does not have programming experience.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"meatyturtle"},"content":"11. The product is catered for use by a single user and interaction between users is not supported.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"meatyturtle"},"content":"12. Data collected should be stored locally, and be human editable.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"meatyturtle"},"content":"13. The product should be packaged in a single `jar` file without the need for other installers.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"meatyturtle"},"content":"14. The GUI should be optimised for standard screen resolutions 1920x1080 and higher, and screen scales 100% and 125%.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"meatyturtle"},"content":"15. The size of the product should not exceed 100mb.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"meatyturtle"},"content":"16. Visuals and text should be a large enough size for clarity.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"meatyturtle"},"content":"* **Financial Advisor**: A professional who provides expertise for clients\u0027 decisions around money matters, personal finances, and investments","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"meatyturtle"},"content":"* **Client**: A financial advisor\u0027s contact","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"meatyturtle"},"content":"* **GUI**: Graphical User Interface, a type of user interface through which users interact with electronic devices via visual indicator representations","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"meatyturtle"},"content":"* **Payment frequency**: The frequency of which a Financial Advisor receives payments from their clients. Typically, every 3, 6, 9 or 12 months","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"meatyturtle"},"content":"* **Policy**: An agreement between the Financial Advisor and their client on the financial advisory services provided","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"meatyturtle":20,"-":368,"Shantaa":95}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"AlphaPyke"},"content":"Financial Assurance Revolutionary Telemarketer (FART) is a **desktop app for managing contacts just for you Financial Advisors, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, FART can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"AlphaPyke"},"content":" 1. Should you require help, [here](https://www.oracle.com/java/technologies/downloads/#java17) is the download link to Java \u002717\u0027","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"AlphaPyke"},"content":" 2. After accessing the website, please choose the right download link for your operating system (Linux, macOS or Windows)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"AlphaPyke"},"content":"2. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"AlphaPyke"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your FART.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"AlphaPyke"},"content":" 1. A good home folder would be the Downloads folder as it makes the next step easier.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"AlphaPyke"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar fart_in_a.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"AlphaPyke"},"content":" 1. To open the command terminal, do open the terminal app for Linux/macOS users, and Windows Powershell for Windows users.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"AlphaPyke"},"content":" 2. For most users, in the terminal window please type `cd Downloads` to change the current folder to Downloads","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"AlphaPyke"},"content":"5. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"AlphaPyke"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 b/11 09 2001` : Adds a contact named `John Doe` to the FART book and automatically marks them as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"AlphaPyke"},"content":" * `paid 3` : Marks the 3rd contact shown in the current list as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"AlphaPyke"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"AlphaPyke"},"content":"Adds a person to the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"AlphaPyke"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS b/BIRTHDAY [t/TAG]…​`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"AlphaPyke"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 b/11 09 2001`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"AlphaPyke"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 b/11 09 2001 t/criminal`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"AlphaPyke"},"content":"Shows a list of all persons in the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"AlphaPyke"},"content":"Edits an existing person in the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"AlphaPyke"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [b/BIRTHDAY] [t/TAG]…​`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"AlphaPyke"},"content":"Deletes the specified person from the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"AlphaPyke"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"AlphaPyke"},"content":"Clears all entries from the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"AlphaPyke"},"content":"### Marking a person as paid: `paid`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"AlphaPyke"},"content":"Marks the specified person from the FART book as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"AlphaPyke"},"content":"Format: `paid INDEX`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"AlphaPyke"},"content":"* Marks the person at the specified `INDEX` as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"AlphaPyke"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"AlphaPyke"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"AlphaPyke"},"content":"Examples:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"AlphaPyke"},"content":"* `list` followed by `paid 2` marks the 2nd person in the FART book as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"AlphaPyke"},"content":"* `find Betsy` followed by `paid 1` marks the 1st person in the results of the `find` command as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"AlphaPyke"},"content":"### Marking a person as unpaid: `unpaid`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"AlphaPyke"},"content":"Marks the specified person from the FART book as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"AlphaPyke"},"content":"Format: `unpaid INDEX`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"AlphaPyke"},"content":"* Marks the person at the specified `INDEX` as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"AlphaPyke"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"AlphaPyke"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"AlphaPyke"},"content":"Examples:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"AlphaPyke"},"content":"* `list` followed by `unpaid 2` marks the 2nd person in the FART book as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"AlphaPyke"},"content":"* `find Betsy` followed by `unpaid 1` marks the 1st person in the results of the `find` command as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"AlphaPyke"},"content":"FART data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"AlphaPyke"},"content":"FART data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"AlphaPyke"},"content":"If your changes to the data file makes its format invalid, FART will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"AlphaPyke"},"content":"Furthermore, certain edits can cause the FART to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"AlphaPyke"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous FART home folder.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"AlphaPyke"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 b/11 09 2001 t/friend t/colleague`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"AlphaPyke"},"content":"**Paid** | `paid INDEX`\u003cbr\u003e e.g., `paid 3`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"AlphaPyke"},"content":"**Unpaid** | `unpaid INDEX`\u003cbr\u003e e.g., `unpaid 3`","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"AlphaPyke":60,"-":176}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"title: \"Financial Assurance Revolutionary Telemarketer\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"repository: \"AY2425S1-CS2103T-F14b-4/tp\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":2,"-":13}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"AlphaPyke"},"content":"title: Financial Assurance Revolutionary Telemarketer (FART)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"AlphaPyke"},"content":"**FART is a desktop application for managing your contact details, catered to financial advisors.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"AlphaPyke"},"content":"* If you are interested in using FART, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"AlphaPyke"},"content":"* If you are interested about developing FART, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"AlphaPyke":4,"-":15}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"meatyturtle"},"content":"import seedu.address.logic.confirmations.ConfirmDelete;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"meatyturtle"},"content":" private boolean isConfirmed \u003d false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"meatyturtle"},"content":" // setter method for testing purposes","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"meatyturtle"},"content":" public void setConfirmed(boolean isConfirmed) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"meatyturtle"},"content":" this.isConfirmed \u003d isConfirmed;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"meatyturtle"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"meatyturtle"},"content":" // display confirmation dialog - not sure if this is the best place to put it","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"meatyturtle"},"content":" if (!isConfirmed) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"meatyturtle"},"content":" ConfirmDelete.showConfirmationDialog(personToDelete);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"meatyturtle"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"meatyturtle"},"content":" if (!isConfirmed) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"meatyturtle"},"content":" throw new CommandException(\"You have cancelled the deletion!\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"meatyturtle"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"meatyturtle":16,"-":68}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Shantaa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HASPAID;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Shantaa"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Shantaa"},"content":" + \"[\" + PREFIX_HASPAID + \"hasPaid]\\n\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Shantaa"},"content":" Boolean updatedHasPaid \u003d editPersonDescriptor.getHasPaid().orElse(personToEdit.getHasPaid());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Shantaa"},"content":" return new Person(updatedName, updatedPhone, updatedEmail,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Shantaa"},"content":" updatedAddress, updatedTags, updatedHasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Shantaa"},"content":" private Boolean hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Shantaa"},"content":" setHasPaid(toCopy.hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Shantaa"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"Shantaa"},"content":" public void setHasPaid(Boolean hasPaid) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Shantaa"},"content":" this.hasPaid \u003d hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"Shantaa"},"content":" public Optional\u003cBoolean\u003e getHasPaid() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"Shantaa"},"content":" return Optional.ofNullable(hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"Shantaa"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"Shantaa"},"content":" \u0026\u0026 Objects.equals(hasPaid, otherEditPersonDescriptor.hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"Shantaa"},"content":" .add(\"hasPaid\", hasPaid)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"-":238,"Shantaa":20}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"fymbc"},"content":" * Finds and lists all persons in the address book whose name, phone, email, address, or tags","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":" * contain any of the argument keywords. Keyword matching is case-insensitive.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose name, phone, email, \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"fymbc"},"content":" + \"address, or tags contain any of the specified keywords (case-insensitive) \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"fymbc"},"content":" + \"and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"fymbc"},"content":" private final PersonContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"fymbc"},"content":" public FindCommand(PersonContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"-":51,"fymbc":8}},{"path":"src/main/java/seedu/address/logic/confirmations/ConfirmDelete.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"meatyturtle"},"content":"package seedu.address.logic.confirmations;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"meatyturtle"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"meatyturtle"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"meatyturtle"},"content":"import javafx.scene.control.ButtonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"meatyturtle"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"meatyturtle"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"meatyturtle"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"meatyturtle"},"content":" * Prompts the user to confirm the deletion of a person","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"meatyturtle"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"meatyturtle"},"content":"public class ConfirmDelete {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"meatyturtle"},"content":" public static final String MESSAGE_CONFIRM_DELETE \u003d \"Are you sure you want to delete Person: %1$s ?\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"meatyturtle"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"meatyturtle"},"content":" * Displays a confirmation dialog to prompt the user to confirm the deletion.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"meatyturtle"},"content":" * @param personToDelete The person the user wants to delete","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"meatyturtle"},"content":" * @return Whether the deletion proceeds or not","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"meatyturtle"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"meatyturtle"},"content":" public static boolean showConfirmationDialog(Person personToDelete) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"meatyturtle"},"content":" Alert alert \u003d new Alert(Alert.AlertType.CONFIRMATION);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"meatyturtle"},"content":" alert.setTitle(\"Delete Confirmation\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"meatyturtle"},"content":" alert.setHeaderText(null);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"meatyturtle"},"content":" alert.setContentText(String.format(MESSAGE_CONFIRM_DELETE, Messages.format(personToDelete)));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"meatyturtle"},"content":" Optional\u003cButtonType\u003e result \u003d alert.showAndWait();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"meatyturtle"},"content":" return result.isPresent() \u0026\u0026 result.get() \u003d\u003d ButtonType.OK;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"meatyturtle"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"meatyturtle"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"meatyturtle":30}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Shantaa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HASPAID;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Shantaa"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Shantaa"},"content":" PREFIX_ADDRESS, PREFIX_TAG, PREFIX_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Shantaa"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Shantaa"},"content":" PREFIX_PHONE, PREFIX_EMAIL, PREFIX_HASPAID)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Shantaa"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Shantaa"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Shantaa"},"content":" Boolean hasPaid \u003d Boolean.parseBoolean(argMultimap.getValue(PREFIX_HASPAID).get());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Shantaa"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"-":57,"Shantaa":9}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Shantaa"},"content":" public static final Prefix PREFIX_HASPAID \u003d new Prefix(\"paid/\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"-":15,"Shantaa":1}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"fymbc"},"content":" return new FindCommand(new PersonContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"-":31,"fymbc":2}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"meatyturtle"},"content":" requireNonNull(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"meatyturtle":1,"-":148}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Shantaa"},"content":" private final Boolean hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Shantaa"},"content":" public Person(Name name, Phone phone, Email email, Address address,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Shantaa"},"content":" Set\u003cTag\u003e tags, Boolean hasPaid) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Shantaa"},"content":" requireAllNonNull(name, phone, email, address, tags, hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Shantaa"},"content":" this.hasPaid \u003d hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Shantaa"},"content":" public Boolean getHasPaid() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Shantaa"},"content":" return hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Shantaa"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Shantaa"},"content":" \u0026\u0026 hasPaid \u003d\u003d otherPerson.hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Shantaa"},"content":" return Objects.hash(name, phone, email, address, tags, hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Shantaa"},"content":" .add(\"hasPaid\", hasPaid)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":113,"Shantaa":13}},{"path":"src/main/java/seedu/address/model/person/PersonContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"fymbc"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"fymbc"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"fymbc"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"fymbc"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"fymbc"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"fymbc"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"fymbc"},"content":" * Tests that a {@code Person}\u0027s {@code Name}, {@code Phone}, {@code Email}, {@code Address},","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"fymbc"},"content":" * or {@code Tags} match any of the keywords given.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"fymbc"},"content":"public class PersonContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"fymbc"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"fymbc"},"content":" public PersonContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"fymbc"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"fymbc"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"fymbc"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"fymbc"},"content":" return keywords.stream()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"fymbc"},"content":" .anyMatch(keyword -\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"fymbc"},"content":" StringUtil.containsWordIgnoreCase(person.getName().fullName, keyword)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"fymbc"},"content":" || StringUtil.containsWordIgnoreCase(person.getPhone().toString(), keyword)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"fymbc"},"content":" || StringUtil.containsWordIgnoreCase(person.getEmail().toString(), keyword)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"fymbc"},"content":" || StringUtil.containsWordIgnoreCase(person.getAddress().toString(), keyword)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"fymbc"},"content":" || person.getTags().stream()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"fymbc"},"content":" .anyMatch(tag -\u003e StringUtil.containsWordIgnoreCase(tag.toString(), keyword))","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"fymbc"},"content":" );","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"fymbc"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"fymbc"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"fymbc"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"fymbc"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"fymbc"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"fymbc"},"content":" if (!(other instanceof PersonContainsKeywordsPredicate)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"fymbc"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate otherPersonContainsKeywordsPredicate \u003d (PersonContainsKeywordsPredicate) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"fymbc"},"content":" return keywords.equals(otherPersonContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"fymbc"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"fymbc"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"fymbc"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"fymbc"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"fymbc":52}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"friends\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"colleagues\", \"friends\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"neighbours\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"family\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"classmates\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"colleagues\"), false)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"-":54,"Shantaa":6}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Shantaa"},"content":" private final String hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Shantaa"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"hasPaid\") String hasPaid) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Shantaa"},"content":" this.hasPaid \u003d hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Shantaa"},"content":" hasPaid \u003d source.getHasPaid().toString();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Shantaa"},"content":" if (hasPaid \u003d\u003d null) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Shantaa"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"hasPaid\"));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Shantaa"},"content":" Boolean modelHasPaid \u003d hasPaid.equals(\"true\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Shantaa"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags, modelHasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":107,"Shantaa":11}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Shantaa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HASPAID_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + HASPAID_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"-":174,"Shantaa":2}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Shantaa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HASPAID;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Shantaa"},"content":" public static final String VALID_HASPAID_TRUE \u003d \"true\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Shantaa"},"content":" public static final String VALID_HASPAID_FALSE \u003d \"false\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Shantaa"},"content":" public static final String HASPAID_AMY \u003d \" \" + PREFIX_HASPAID + VALID_HASPAID_TRUE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Shantaa"},"content":" public static final String HASPAID_BOB \u003d \" \" + PREFIX_HASPAID + VALID_HASPAID_FALSE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Shantaa"},"content":" .withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Shantaa"},"content":" .withHasPaid(Boolean.parseBoolean(VALID_HASPAID_TRUE)).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Shantaa"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Shantaa"},"content":" .withHasPaid(Boolean.parseBoolean(VALID_HASPAID_FALSE)).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"fymbc"},"content":" model.updateFilteredPersonList(new PersonContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"-":124,"Shantaa":9,"fymbc":2}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"meatyturtle"},"content":" * For testing purposes, mock ConfirmDelete to always return true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"meatyturtle"},"content":" deleteCommand.setConfirmed(true); // bypasses the user confirmation","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"meatyturtle"},"content":" deleteCommand.setConfirmed(true);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"meatyturtle"},"content":" deleteCommand.setConfirmed(true);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"meatyturtle"},"content":" deleteCommand.setConfirmed(true);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"meatyturtle":5,"-":118}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Shantaa"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", hasPaid\u003d\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Shantaa"},"content":" + editPersonDescriptor.getHasPaid().orElse(null) + \"}\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":70,"Shantaa":2}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"fymbc"},"content":" new PersonContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"fymbc"},"content":" new PersonContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"fymbc"},"content":" * Parses {@code userInput} into a {@code PersonContainsKeywordsPredicate}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"fymbc"},"content":" private PersonContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"fymbc"},"content":" return new PersonContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"-":80,"fymbc":11}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Shantaa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HASPAID_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Shantaa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.HASPAID_BOB;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Shantaa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HASPAID;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Shantaa"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + HASPAID_BOB, new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Shantaa"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Shantaa"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + HASPAID_BOB,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Shantaa"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + HASPAID_BOB;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Shantaa"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Shantaa"},"content":" PREFIX_EMAIL, PREFIX_PHONE, PREFIX_HASPAID));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Shantaa"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + HASPAID_AMY,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + HASPAID_BOB,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB + HASPAID_BOB,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Shantaa"},"content":" + VALID_EMAIL_BOB + ADDRESS_DESC_BOB + HASPAID_BOB,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_BOB + VALID_ADDRESS_BOB + HASPAID_BOB,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Shantaa"},"content":" + VALID_EMAIL_BOB + VALID_ADDRESS_BOB + HASPAID_BOB,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Shantaa"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + HASPAID_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"Shantaa"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + HASPAID_BOB, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"Shantaa"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + HASPAID_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"Shantaa"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + HASPAID_BOB, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"Shantaa"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND + HASPAID_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC + HASPAID_BOB,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"Shantaa"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + HASPAID_BOB,","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"-":179,"Shantaa":29}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"fymbc"},"content":" assertEquals(new FindCommand(new PersonContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"-":99,"fymbc":2}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"fymbc"},"content":" new FindCommand(new PersonContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"-":32,"fymbc":2}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"fymbc"},"content":" modelManager.updateFilteredPersonList(new PersonContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"-":130,"fymbc":2}},{"path":"src/test/java/seedu/address/model/person/PersonContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"fymbc"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"fymbc"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"fymbc"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"fymbc"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"fymbc"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"fymbc"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"fymbc"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"fymbc"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"fymbc"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"fymbc"},"content":"public class PersonContainsKeywordsPredicateTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"fymbc"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"fymbc"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"fymbc"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate firstP \u003d new PersonContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate secondP \u003d new PersonContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"fymbc"},"content":" // sam","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"fymbc"},"content":" // e object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"fymbc"},"content":" assertTrue(firstP.equals(firstP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"fymbc"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate firstPCopy \u003d new PersonContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"fymbc"},"content":" assertTrue(firstP.equals(firstPCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"fymbc"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"fymbc"},"content":" assertFalse(firstP.equals(1));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"fymbc"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"fymbc"},"content":" assertFalse(firstP.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"fymbc"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"fymbc"},"content":" assertFalse(firstP.equals(secondP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"fymbc"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"fymbc"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"fymbc"},"content":" // One keyword","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d new PersonContainsKeywordsPredicate(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"fymbc"},"content":" Collections.singletonList(\"Alice\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"fymbc"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"fymbc"},"content":" // Multiple keywords","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"fymbc"},"content":" predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"fymbc"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"fymbc"},"content":" // Only one matching keyword","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"fymbc"},"content":" predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"fymbc"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"fymbc"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"fymbc"},"content":" predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"fymbc"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"fymbc"},"content":" //To be fixed in v1.3","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"fymbc"},"content":" //","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"fymbc"},"content":" // @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"fymbc"},"content":" // public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"fymbc"},"content":" // // Zero keywords","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"fymbc"},"content":" // PersonContainsKeywordsPredicate predicate \u003d new PersonContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"fymbc"},"content":" // assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"fymbc"},"content":" //","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"fymbc"},"content":" // // Non-matching keyword","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"fymbc"},"content":" // predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"fymbc"},"content":" // assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"fymbc"},"content":" //","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"fymbc"},"content":" // // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"fymbc"},"content":" // predicate \u003d new PersonContainsKeywordsPredicate(Arrays.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"fymbc"},"content":" // asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"fymbc"},"content":" // assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"fymbc"},"content":" // .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"fymbc"},"content":" // }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"fymbc"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"fymbc"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"fymbc"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d new PersonContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"fymbc"},"content":" String expected \u003d PersonContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"fymbc"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"fymbc"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"fymbc":90}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Shantaa"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Shantaa"},"content":" + \", tags\u003d\" + ALICE.getTags() + \", hasPaid\u003d\" + ALICE.getHasPaid() + \"}\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"-":98,"Shantaa":2}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Shantaa"},"content":" private static final String VALID_HASPAID \u003d BENSON.getHasPaid().toString();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Shantaa"},"content":" VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Shantaa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Shantaa"},"content":" VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Shantaa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Shantaa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Shantaa"},"content":" INVALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Shantaa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Shantaa"},"content":" null, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, invalidTags, VALID_HASPAID);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":101,"Shantaa":19}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Shantaa"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Shantaa"},"content":" * Sets the {@code HasPaid} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Shantaa"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Shantaa"},"content":" public EditPersonDescriptorBuilder withHasPaid(Boolean hasPaid) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Shantaa"},"content":" descriptor.setHasPaid(hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Shantaa"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":87,"Shantaa":8}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Shantaa"},"content":" public static final Boolean DEFAULT_HASPAID \u003d false;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Shantaa"},"content":" private Boolean hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Shantaa"},"content":" hasPaid \u003d DEFAULT_HASPAID;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Shantaa"},"content":" hasPaid \u003d personToCopy.getHasPaid();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Shantaa"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Shantaa"},"content":" * Sets the {@code hasPaid} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Shantaa"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Shantaa"},"content":" public PersonBuilder withHasPaid(Boolean hasPaid) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Shantaa"},"content":" this.hasPaid \u003d hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Shantaa"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Shantaa"},"content":" return new Person(name, phone, email, address, tags, hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"-":95,"Shantaa":13}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Shantaa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_HASPAID;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Shantaa"},"content":" sb.append(PREFIX_HASPAID + person.getHasPaid().toString() + \" \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"-":62,"Shantaa":2}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Shantaa"},"content":" .withTags(\"friends\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Shantaa"},"content":" .withTags(\"owesMoney\", \"friends\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Shantaa"},"content":" .withTags(\"friends\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Shantaa"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Shantaa"},"content":" .withTags(VALID_TAG_FRIEND).withHasPaid(true).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"-":66,"Shantaa":12}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"fymbc"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-F14b-4/tp/actions)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"fymbc"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-F14b-4/tp/graph/badge.svg?token\u003d33G8N0D437)](https://codecov.io/gh/AY2425S1-CS2103T-F14b-4/tp)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"fymbc"},"content":"# Financial Advisors Revolutionary Telemarketer","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"fymbc"},"content":"This product is for Financial Advisors who engage frequently or specialise primarily in client outreach.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"fymbc"},"content":"## Features","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"fymbc"},"content":"Our product:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":"* Allows advisors to keep track of who they have and have not contacted recently","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"fymbc"},"content":"* Sorts clients based on various categories and allow advisors to filter by these categories","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"fymbc"},"content":"* Automates the process of sending an automatic reminder to the advisor if a client has not been contacted in a while","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"fymbc"},"content":"* For the detailed documentation of this project, please see the **[F.A.R.T. Product Website](https://ay2425s1-cs2103t-f14b-4.github.io/tp/)**.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":"## Credits","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"fymbc"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"fymbc":16,"-":3}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: About Us","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](https://www.comp.nus.edu.sg).","lastModifiedDate":"2024-07-20","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"AlphaPyke"},"content":"### Lim Qiao Yi","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"meatyturtle"},"content":"\u003cimg src\u003d\"images/meatyturtle.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"meatyturtle"},"content":"[[github](https://github.com/meatyturtle)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"meatyturtle"},"content":"[[linkedin](https://linkedin.com/limqiaoyi)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"meatyturtle"},"content":"* Role: Developer","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"meatyturtle"},"content":"* Responsibility: Integration","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Shantaa"},"content":"### Shane Tay","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Shantaa"},"content":"\u003cimg src\u003d\"images/shantaa.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Shantaa"},"content":"[[github](http://github.com/shantaa)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Shantaa"},"content":"* Role: Documentation","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Shantaa"},"content":"* Responsibilities: Responsible for the quality of various project documents.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Justin-Aw46"},"content":"### Justin Aw","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Justin-Aw46"},"content":"\u003cimg src\u003d\"images/justin-aw46.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Justin-Aw46"},"content":"[[github](http://github.com/Justin-Aw46)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Justin-Aw46"},"content":"* Responsibilities: Testing","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"AlphaPyke"},"content":"### Joshua Ng","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"AlphaPyke"},"content":"\u003cimg src\u003d\"images/alphapyke.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"AlphaPyke"},"content":"[[github](http://github.com/AlphaPyke)]","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"AlphaPyke"},"content":"* Role: Code Quality","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"AlphaPyke"},"content":"* Responsibilities: Looks after code quality, ensures adherence to coding standards and git standards.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"fymbc"},"content":"### Tiew Wei Xuan","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"fymbc"},"content":"\u003cimg src\u003d\"images/fymbc.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"fymbc"},"content":"[[github](http://github.com/fymbc)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"fymbc"},"content":"* Role: Team Lead","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"fymbc"},"content":"* Responsibilities: Scheduling, Tracking, Deliverables, Deadlines","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"meatyturtle":5,"Justin-Aw46":4,"AlphaPyke":6,"-":31,"Shantaa":5,"fymbc":5}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: Developer Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well}","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":":bulb: **Tip:** The `.puml` files used to create diagrams in this document `docs/diagrams` folder. Refer to the [_PlantUML Tutorial_ at se-edu/guides](https://se-education.org/guides/tutorials/plantUml.html) to learn how to create and edit diagrams.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureDiagram.png\" width\u003d\"280\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ArchitectureSequenceDiagram.png\" width\u003d\"574\" /\u003e","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ComponentManagers.png\" width\u003d\"300\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![Structure of the UI Component](images/UiClassDiagram.png)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/LogicClassDiagram.png\" width\u003d\"550\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"![Interactions Inside the Logic Component for the `delete 1` Command](images/DeleteSequenceDiagram.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ParserClasses.png\" width\u003d\"600\"/\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/ModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/BetterModelClassDiagram.png\" width\u003d\"450\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/StorageClassDiagram.png\" width\u003d\"550\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"![UndoRedoState0](images/UndoRedoState0.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"![UndoRedoState1](images/UndoRedoState1.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"![UndoRedoState2](images/UndoRedoState2.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"![UndoRedoState3](images/UndoRedoState3.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Logic.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"![UndoSequenceDiagram](images/UndoSequenceDiagram-Model.png)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"![UndoRedoState4](images/UndoRedoState4.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"![UndoRedoState5](images/UndoRedoState5.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/CommitActivityDiagram.png\" width\u003d\"250\" /\u003e","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"Shantaa"},"content":"* Financial advisors who frequently or specialise primarily in client outreach","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"Shantaa"},"content":"**Value proposition**:","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"Shantaa"},"content":"* manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"Shantaa"},"content":"* Keep track of who has and has not been contacted recently","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"Shantaa"},"content":"* Sort clients based on various categories","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"Shantaa"},"content":"* Filter for clients by above categories","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"Shantaa"},"content":"* ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"Shantaa"},"content":"|----------|----------------------------------------------------|----------------------------------------------------------------------------|----------------------------------------------------------|","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"Shantaa"},"content":"| `*` | Forgetful Financial Advisor | Have a quick view of the contacts I need to contact | Keep track of them without using my own memory |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"Shantaa"},"content":"| `**` | Financial Advisor with many clients | Note who I have contacted and have not contacted in a specific time period | Contact those who I have not reached out to recently |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"Shantaa"},"content":"| `**` | Financial Advisor with many clients | Keep a template of catch-up messages to send to clients | Efficiently send messages to clients when necessary |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"Shantaa"},"content":"| `*` | Freshly registered Financial Advisor | Import contacts from my phone via CSV file | Have a starting list of contacts to work with |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"Shantaa"},"content":"| `**` | Forgetful Financial Advisor | Have automated reminders when I have not contacted a client in a while | Be reminded to catch up with them |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"Shantaa"},"content":"| `***` | Financial Advisor who just met someone new | Add contacts | Have the contact in my list |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"Shantaa"},"content":"| `***` | Retiring Financial Advisor | Delete contacts | Get rid of contacts that are no longer useful |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"Shantaa"},"content":"| `*` | Organised Financial Advisor | Create folders to group contacts under predetermined/self-created groups | Sort my contacts accordingly |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"Shantaa"},"content":"| `**` | Meticulous Financial Advisor | Edit contact details | Update when their details as necessary |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"Shantaa"},"content":"| `***` | Meticulous Financial Advisor | Assign tags to my contacts | Easily sort my contacts by certain tags |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"Shantaa"},"content":"| `**` | Financial Advisor who woke up with someone in mind | Filter my contacts based on attributes | Find that one contact quickly |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Shantaa"},"content":"| `*` | Meticulous Financial Advisor | Add clients’ policies to their contact | Keep track of what policies the client is under |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"Shantaa"},"content":"| `***` | Financially Struggling Financial Advisor | Keep track of which clients have made payments | Keep track of commissions |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"Shantaa"},"content":"| `**` | Boomer Financial Advisor | Run through a tutorial on how to use the app | Understand how the functions work |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"Shantaa"},"content":"| `*` | Financial Advisor who just downloaded the app | See sample data | See how a populated version of the app will look like |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"Shantaa"},"content":"| `*` | Meticulous Financial Advisor | Upload copies of clients’ PDF policies to their contact | Keep record of clients’ contracts for easy reference |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"Shantaa"},"content":"| `**` | Financial Advisor who is being chased by his boss | Add reminders on when clients\u0027 contracts need to be renewed | Ensure clients are always up to date on their contracts |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"Shantaa"},"content":"| `*` | Financial Advisor who just downloaded the app | Delete sample/dummy data | Start using the app in a fresh state |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"Shantaa"},"content":"| `*` | Financial Advisor with many clients | Add profile pictures to my clients | Recognize my clients when I meet them in person |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"Shantaa"},"content":"| `*` | Financial Advisor who does his job too well | Attach my clients\u0027 likes/dislikes | Connect with them on a more personal level |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"Shantaa"},"content":"| `***` | Lost Financial Advisor | See a help page of all commands | Refer back to the page anytime I forget the instructions |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"Shantaa"},"content":"| `***` | Forgetful Financial Advisor | See all my contacts | View my entire contact list |","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"Shantaa"},"content":"**Use case: Add a contact**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"Shantaa"},"content":"1. User requests to add a new contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"Shantaa"},"content":"2. AddressBook adds new contact and shows a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"Shantaa"},"content":"* 1a. AddressBook detects an error in the provided details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"Shantaa"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"Shantaa"},"content":"* 1a. AddressBook detects the existence of a duplicate contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"Shantaa"},"content":" * 1a1. AddressBook requests for confirmation to add new contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"Shantaa"},"content":" * 1a1a1. User confirms.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"Shantaa"},"content":" * 1a1a2. AddressBook adds the new contact and displays a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"Shantaa"},"content":" * 1a1b1. User declines.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"Shantaa"},"content":" * 1a1b2. AddressBook displays a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"Shantaa"},"content":"**Use case: Find a contact**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"Shantaa"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"Shantaa"},"content":"1. User requests to find a contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"Shantaa"},"content":"2. AddressBook shows a list of related contacts.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"Shantaa"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"Shantaa"},"content":"* 1a. The list is empty.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"Shantaa"},"content":"**Use case: Mark a contact as paid or unpaid**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Shantaa"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Shantaa"},"content":"1. User requests to mark or unmark a contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"Shantaa"},"content":"2. AddressBook marks or unmarks contact and shows a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"Shantaa"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"Shantaa"},"content":"* 1a. The given index is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Shantaa"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Shantaa"},"content":"**Use case: Delete a contact**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Shantaa"},"content":"**MSS**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"Shantaa"},"content":"1. User requests to delete a contact.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"Shantaa"},"content":"2. AddressBook requests confirmation.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"Shantaa"},"content":"3. User confirms.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"Shantaa"},"content":"4. AddressBook deletes the contact and shows a confirmation message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"Shantaa"},"content":"**Extensions**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"Shantaa"},"content":"* 1a. The given index is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"Shantaa"},"content":" * 1a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"Shantaa"},"content":"* 2a. User declines.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"Shantaa"},"content":" * AddressBook shows a confirmation meesage.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"Shantaa"},"content":" ","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"Shantaa"},"content":" Use case ends.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"meatyturtle"},"content":"2. Should work without the usage of an external database.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"meatyturtle"},"content":"3. Should work without any connection to a remote server or use of any cloud computing service.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"meatyturtle"},"content":"4. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"meatyturtle"},"content":"5. The system should be able to handle storage of over 1000 contacts without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"meatyturtle"},"content":"6. The product is not required to have its own messaging service.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"meatyturtle"},"content":"7. Queries to the system (find, list, paid etc.) should be responded to within 3 seconds.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"meatyturtle"},"content":"8. The product should not use any images / comments / jokes deemed offensive to Financial Advisors.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"meatyturtle"},"content":"9. The system should be usable by a novice with basic command-line knowledge.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"meatyturtle"},"content":"10. Any lists or iterables should be 1-indexed assuming the user does not have programming experience.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"meatyturtle"},"content":"11. The product is catered for use by a single user and interaction between users is not supported.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"meatyturtle"},"content":"12. Data collected should be stored locally, and be human editable.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"meatyturtle"},"content":"13. The product should be packaged in a single `jar` file without the need for other installers.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"meatyturtle"},"content":"14. The GUI should be optimised for standard screen resolutions 1920x1080 and higher, and screen scales 100% and 125%.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"meatyturtle"},"content":"15. The size of the product should not exceed 100mb.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"meatyturtle"},"content":"16. Visuals and text should be a large enough size for clarity.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"meatyturtle"},"content":"* **Financial Advisor**: A professional who provides expertise for clients\u0027 decisions around money matters, personal finances, and investments","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"meatyturtle"},"content":"* **Client**: A financial advisor\u0027s contact","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"meatyturtle"},"content":"* **GUI**: Graphical User Interface, a type of user interface through which users interact with electronic devices via visual indicator representations","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"meatyturtle"},"content":"* **Payment frequency**: The frequency of which a Financial Advisor receives payments from their clients. Typically, every 3, 6, 9 or 12 months","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"meatyturtle"},"content":"* **Policy**: An agreement between the Financial Advisor and their client on the financial advisory services provided","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-info\"\u003e:information_source: **Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"meatyturtle":20,"-":368,"Shantaa":95}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"title: User Guide","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"AlphaPyke"},"content":"Financial Assurance Revolutionary Telemarketer (FART) is a **desktop app for managing contacts just for you Financial Advisors, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, FART can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"* Table of Contents","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"{:toc}","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"AlphaPyke"},"content":" 1. Should you require help, [here](https://www.oracle.com/java/technologies/downloads/#java17) is the download link to Java \u002717\u0027","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"AlphaPyke"},"content":" 2. After accessing the website, please choose the right download link for your operating system (Linux, macOS or Windows)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"AlphaPyke"},"content":"2. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"AlphaPyke"},"content":"3. Copy the file to the folder you want to use as the _home folder_ for your FART.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"AlphaPyke"},"content":" 1. A good home folder would be the Downloads folder as it makes the next step easier.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"AlphaPyke"},"content":"4. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar fart_in_a.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"AlphaPyke"},"content":" 1. To open the command terminal, do open the terminal app for Linux/macOS users, and Windows Powershell for Windows users.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"AlphaPyke"},"content":" 2. For most users, in the terminal window please type `cd Downloads` to change the current folder to Downloads","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"AlphaPyke"},"content":"5. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"AlphaPyke"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 b/11 09 2001` : Adds a contact named `John Doe` to the FART book and automatically marks them as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"AlphaPyke"},"content":" * `paid 3` : Marks the 3rd contact shown in the current list as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"AlphaPyke"},"content":"6. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"block\" class\u003d\"alert alert-info\"\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"**:information_source: Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"AlphaPyke"},"content":"Adds a person to the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"AlphaPyke"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS b/BIRTHDAY [t/TAG]…​`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-primary\"\u003e:bulb: **Tip:**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"A person can have any number of tags (including 0)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"AlphaPyke"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 b/11 09 2001`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"AlphaPyke"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 b/11 09 2001 t/criminal`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"AlphaPyke"},"content":"Shows a list of all persons in the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"AlphaPyke"},"content":"Edits an existing person in the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"AlphaPyke"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [b/BIRTHDAY] [t/TAG]…​`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"AlphaPyke"},"content":"Deletes the specified person from the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"AlphaPyke"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"AlphaPyke"},"content":"Clears all entries from the FART book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"AlphaPyke"},"content":"### Marking a person as paid: `paid`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"AlphaPyke"},"content":"Marks the specified person from the FART book as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"AlphaPyke"},"content":"Format: `paid INDEX`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"AlphaPyke"},"content":"* Marks the person at the specified `INDEX` as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"AlphaPyke"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"AlphaPyke"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"AlphaPyke"},"content":"Examples:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"AlphaPyke"},"content":"* `list` followed by `paid 2` marks the 2nd person in the FART book as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"AlphaPyke"},"content":"* `find Betsy` followed by `paid 1` marks the 1st person in the results of the `find` command as paid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"AlphaPyke"},"content":"### Marking a person as unpaid: `unpaid`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"AlphaPyke"},"content":"Marks the specified person from the FART book as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"AlphaPyke"},"content":"Format: `unpaid INDEX`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"AlphaPyke"},"content":"* Marks the person at the specified `INDEX` as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"AlphaPyke"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"AlphaPyke"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"AlphaPyke"},"content":"Examples:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"AlphaPyke"},"content":"* `list` followed by `unpaid 2` marks the 2nd person in the FART book as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"AlphaPyke"},"content":"* `find Betsy` followed by `unpaid 1` marks the 1st person in the results of the `find` command as unpaid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"AlphaPyke"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"AlphaPyke"},"content":"FART data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"AlphaPyke"},"content":"FART data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003cdiv markdown\u003d\"span\" class\u003d\"alert alert-warning\"\u003e:exclamation: **Caution:**","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"AlphaPyke"},"content":"If your changes to the data file makes its format invalid, FART will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"AlphaPyke"},"content":"Furthermore, certain edits can cause the FART to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"AlphaPyke"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous FART home folder.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"--------|------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"AlphaPyke"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 b/11 09 2001 t/friend t/colleague`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"AlphaPyke"},"content":"**Paid** | `paid INDEX`\u003cbr\u003e e.g., `paid 3`","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"AlphaPyke"},"content":"**Unpaid** | `unpaid INDEX`\u003cbr\u003e e.g., `unpaid 3`","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"AlphaPyke":60,"-":176}},{"path":"docs/_config.yml","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"title: \"Financial Assurance Revolutionary Telemarketer\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"theme: minima","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"header_pages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" - UserGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" - DeveloperGuide.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" - AboutUs.md","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"markdown: kramdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"repository: \"AY2425S1-CS2103T-F14b-4/tp\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"github_icon: \"images/github-icon.png\"","lastModifiedDate":"2020-08-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"plugins:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" - jemoji","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":2,"-":13}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"layout: page","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"AlphaPyke"},"content":"title: Financial Assurance Revolutionary Telemarketer (FART)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"AlphaPyke"},"content":"**FART is a desktop application for managing your contact details, catered to financial advisors.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"AlphaPyke"},"content":"* If you are interested in using FART, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"AlphaPyke"},"content":"* If you are interested about developing FART, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"AlphaPyke":4,"-":15}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"meatyturtle"},"content":"import seedu.address.logic.confirmations.ConfirmDelete;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"meatyturtle"},"content":" private boolean isConfirmed \u003d false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"meatyturtle"},"content":" // setter method for testing purposes","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"meatyturtle"},"content":" public void setConfirmed(boolean isConfirmed) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"meatyturtle"},"content":" this.isConfirmed \u003d isConfirmed;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"meatyturtle"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"meatyturtle"},"content":" // display confirmation dialog - not sure if this is the best place to put it","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"meatyturtle"},"content":" if (!isConfirmed) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"meatyturtle"},"content":" ConfirmDelete.showConfirmationDialog(personToDelete);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"meatyturtle"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"meatyturtle"},"content":" if (!isConfirmed) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"meatyturtle"},"content":" throw new CommandException(\"You have cancelled the deletion!\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"meatyturtle"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"meatyturtle":16,"-":68}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Shantaa"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Shantaa"},"content":" Boolean updatedHasPaid \u003d personToEdit.getHasPaid();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Shantaa"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags, updatedHasPaid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Shantaa"},"content":" private Boolean hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Shantaa"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Shantaa"},"content":" this.hasPaid \u003d toCopy.hasPaid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Shantaa"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"Shantaa"},"content":" public void setHasPaid(Boolean hasPaid) { // needed for EditPersonDescriptorTest.java","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"Shantaa"},"content":" this.hasPaid \u003d hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Shantaa"},"content":" public Optional\u003cBoolean\u003e getHasPaid() { // needed for EditPersonDescriptorTest.java","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"Shantaa"},"content":" return Optional.ofNullable(hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"Shantaa"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Shantaa"},"content":" \u0026\u0026 Objects.equals(hasPaid, otherEditPersonDescriptor.hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"Shantaa"},"content":" .add(\"hasPaid\", hasPaid)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"-":236,"Shantaa":19}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"fymbc"},"content":" * Finds and lists all persons in the address book whose name, phone, email, address, or tags","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":" * contain any of the argument keywords. Keyword matching is case-insensitive.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommand extends Command {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all persons whose name, phone, email, \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"fymbc"},"content":" + \"address, or tags contain any of the specified keywords (case-insensitive) \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"fymbc"},"content":" + \"and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"fymbc"},"content":" private final PersonContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"fymbc"},"content":" public FindCommand(PersonContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size()));","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"-":51,"fymbc":8}},{"path":"src/main/java/seedu/address/logic/commands/PaidCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Justin-Aw46"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Justin-Aw46"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Justin-Aw46"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Justin-Aw46"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Justin-Aw46"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Justin-Aw46"},"content":" * Marks the person identified by the index number to have made payment.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Justin-Aw46"},"content":"public class PaidCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Justin-Aw46"},"content":" public static final String COMMAND_WORD \u003d \"paid\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Justin-Aw46"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Justin-Aw46"},"content":" + \": Marks the person identified by the index number to have made payment.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Justin-Aw46"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Justin-Aw46"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Justin-Aw46"},"content":" public static final String MESSAGE_PAID_PERSON_SUCCESS \u003d \"Marked Person: %1$s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Justin-Aw46"},"content":" private final Index index;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Justin-Aw46"},"content":" private final PaidPersonDescriptor paidPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Justin-Aw46"},"content":" * @param index of the person in the filtered person list to mark as paid","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Justin-Aw46"},"content":" * @param paidPersonDescriptor person that has been marked as paid","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Justin-Aw46"},"content":" public PaidCommand(Index index, PaidPersonDescriptor paidPersonDescriptor) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Justin-Aw46"},"content":" requireNonNull(index);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Justin-Aw46"},"content":" requireNonNull(paidPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Justin-Aw46"},"content":" this.index \u003d index;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Justin-Aw46"},"content":" this.paidPersonDescriptor \u003d new PaidCommand.PaidPersonDescriptor(paidPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Justin-Aw46"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Justin-Aw46"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Justin-Aw46"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Justin-Aw46"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Justin-Aw46"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Justin-Aw46"},"content":" Person personToPay \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Justin-Aw46"},"content":" Person paidPerson \u003d createPaidPerson(personToPay, paidPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Justin-Aw46"},"content":" model.setPerson(personToPay, paidPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Justin-Aw46"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Justin-Aw46"},"content":" return new CommandResult(String.format(MESSAGE_PAID_PERSON_SUCCESS, Messages.format(paidPerson)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Justin-Aw46"},"content":" * Creates and returns a {@code Person} with the details of {@code personToPay}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Justin-Aw46"},"content":" * edited with {@code paidPersonDescriptor}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Justin-Aw46"},"content":" private static Person createPaidPerson(Person personToPay, PaidPersonDescriptor paidPersonDescriptor) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Justin-Aw46"},"content":" assert personToPay !\u003d null;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Justin-Aw46"},"content":" Boolean updatedHasPaid \u003d true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Justin-Aw46"},"content":" return new Person(personToPay.getName(), personToPay.getPhone(), personToPay.getEmail(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Justin-Aw46"},"content":" personToPay.getAddress(), personToPay.getTags(), updatedHasPaid);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Justin-Aw46"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Justin-Aw46"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Justin-Aw46"},"content":" return true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Justin-Aw46"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Justin-Aw46"},"content":" if (!(other instanceof PaidCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Justin-Aw46"},"content":" return false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand otherPaidCommand \u003d (PaidCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Justin-Aw46"},"content":" return index.equals(otherPaidCommand.index);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Justin-Aw46"},"content":" public String toString() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Justin-Aw46"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Justin-Aw46"},"content":" .add(\"targetIndex\", index)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Justin-Aw46"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Justin-Aw46"},"content":" * Stores the details for person to mark as paid. Same as the nested class in EditCommand but this","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Justin-Aw46"},"content":" * only changes the hasPaid variable","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Justin-Aw46"},"content":" public static class PaidPersonDescriptor {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Justin-Aw46"},"content":" private Boolean hasPaid;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Justin-Aw46"},"content":" public PaidPersonDescriptor() {}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Justin-Aw46"},"content":" * Copy constructor.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Justin-Aw46"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Justin-Aw46"},"content":" public PaidPersonDescriptor(PaidPersonDescriptor toCopy) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Justin-Aw46"},"content":" toCopy.setHasPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Justin-Aw46"},"content":" public void setHasPaid() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Justin-Aw46"},"content":" this.hasPaid \u003d true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Justin-Aw46"},"content":" public Optional\u003cBoolean\u003e getHasPaid() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Justin-Aw46"},"content":" return Optional.ofNullable(hasPaid);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Justin-Aw46"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Justin-Aw46"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Justin-Aw46"},"content":" return true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Justin-Aw46"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Justin-Aw46"},"content":" if (!(other instanceof PaidCommand.PaidPersonDescriptor)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Justin-Aw46"},"content":" return false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand.PaidPersonDescriptor otherPaidPersonDescriptor \u003d (PaidCommand.PaidPersonDescriptor) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Justin-Aw46"},"content":" return Objects.equals(hasPaid, otherPaidPersonDescriptor.hasPaid);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Justin-Aw46"},"content":" public String toString() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Justin-Aw46"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Justin-Aw46"},"content":" .add(\"hasPaid\", hasPaid)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Justin-Aw46"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Justin-Aw46"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":149}},{"path":"src/main/java/seedu/address/logic/commands/UnpaidCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Justin-Aw46"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Justin-Aw46"},"content":"import java.util.List;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Justin-Aw46"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Justin-Aw46"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Justin-Aw46"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Justin-Aw46"},"content":" * Marks the person identified by the index number to have made payment.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Justin-Aw46"},"content":"public class UnpaidCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Justin-Aw46"},"content":" public static final String COMMAND_WORD \u003d \"unpaid\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Justin-Aw46"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Justin-Aw46"},"content":" + \": Marks the person identified by the index number to have not made payment.\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Justin-Aw46"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Justin-Aw46"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Justin-Aw46"},"content":" public static final String MESSAGE_UNPAID_PERSON_SUCCESS \u003d \"Marked Person: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Justin-Aw46"},"content":" private final Index index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Justin-Aw46"},"content":" private final UnpaidPersonDescriptor unpaidPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Justin-Aw46"},"content":" * @param index of the person in the filtered person list to mark as paid","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Justin-Aw46"},"content":" * @param unpaidPersonDescriptor person that has been marked as paid","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Justin-Aw46"},"content":" public UnpaidCommand(Index index, UnpaidPersonDescriptor unpaidPersonDescriptor) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Justin-Aw46"},"content":" requireNonNull(index);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Justin-Aw46"},"content":" requireNonNull(unpaidPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Justin-Aw46"},"content":" this.index \u003d index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Justin-Aw46"},"content":" this.unpaidPersonDescriptor \u003d new UnpaidCommand.UnpaidPersonDescriptor(unpaidPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Justin-Aw46"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Justin-Aw46"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Justin-Aw46"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Justin-Aw46"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Justin-Aw46"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Justin-Aw46"},"content":" Person originalPerson \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Justin-Aw46"},"content":" Person unpaidPerson \u003d createUnpaidPerson(originalPerson, unpaidPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Justin-Aw46"},"content":" model.setPerson(originalPerson, unpaidPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Justin-Aw46"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Justin-Aw46"},"content":" return new CommandResult(String.format(MESSAGE_UNPAID_PERSON_SUCCESS, Messages.format(unpaidPerson)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Justin-Aw46"},"content":" * Creates and returns a {@code Person} with the details of {@code personToPay}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Justin-Aw46"},"content":" * edited with {@code paidPersonDescriptor}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Justin-Aw46"},"content":" private static Person createUnpaidPerson(Person personToPay, UnpaidPersonDescriptor unpaidPersonDescriptor) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Justin-Aw46"},"content":" assert personToPay !\u003d null;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Justin-Aw46"},"content":" Boolean updatedHasNotPaid \u003d false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Justin-Aw46"},"content":" return new Person(personToPay.getName(), personToPay.getPhone(), personToPay.getEmail(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Justin-Aw46"},"content":" personToPay.getAddress(), personToPay.getTags(), updatedHasNotPaid);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Justin-Aw46"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Justin-Aw46"},"content":" if (this \u003d\u003d other) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Justin-Aw46"},"content":" return true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Justin-Aw46"},"content":" if (!(other instanceof UnpaidCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Justin-Aw46"},"content":" return false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand otherCommand \u003d (UnpaidCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Justin-Aw46"},"content":" return index.equals(otherCommand.index);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Justin-Aw46"},"content":" public String toString() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Justin-Aw46"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Justin-Aw46"},"content":" .add(\"targetIndex\", index)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Justin-Aw46"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Justin-Aw46"},"content":" * Stores the details for person to mark as paid. Same as the nested class in EditCommand but this","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Justin-Aw46"},"content":" * only changes the hasPaid variable","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Justin-Aw46"},"content":" public static class UnpaidPersonDescriptor {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Justin-Aw46"},"content":" private Boolean hasPaid;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Justin-Aw46"},"content":" public UnpaidPersonDescriptor() {}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Justin-Aw46"},"content":" * Copy constructor.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Justin-Aw46"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Justin-Aw46"},"content":" public UnpaidPersonDescriptor(UnpaidPersonDescriptor toCopy) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Justin-Aw46"},"content":" toCopy.setHasNotPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Justin-Aw46"},"content":" public void setHasNotPaid() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Justin-Aw46"},"content":" this.hasPaid \u003d false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Justin-Aw46"},"content":" public Optional\u003cBoolean\u003e getHasPaid() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Justin-Aw46"},"content":" return Optional.ofNullable(hasPaid);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Justin-Aw46"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Justin-Aw46"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Justin-Aw46"},"content":" return true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Justin-Aw46"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Justin-Aw46"},"content":" if (!(other instanceof PaidCommand.PaidPersonDescriptor)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Justin-Aw46"},"content":" return false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand.UnpaidPersonDescriptor otherUnpaidPersonDescriptor \u003d","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Justin-Aw46"},"content":" (UnpaidCommand.UnpaidPersonDescriptor) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Justin-Aw46"},"content":" return Objects.equals(hasPaid, otherUnpaidPersonDescriptor.hasPaid);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Justin-Aw46"},"content":" public String toString() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Justin-Aw46"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Justin-Aw46"},"content":" .add(\"hasNotPaid\", hasPaid)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Justin-Aw46"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Justin-Aw46"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":147}},{"path":"src/main/java/seedu/address/logic/confirmations/ConfirmDelete.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"meatyturtle"},"content":"package seedu.address.logic.confirmations;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"meatyturtle"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"meatyturtle"},"content":"import javafx.scene.control.Alert;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"meatyturtle"},"content":"import javafx.scene.control.ButtonType;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"meatyturtle"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"meatyturtle"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"meatyturtle"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"meatyturtle"},"content":" * Prompts the user to confirm the deletion of a person","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"meatyturtle"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"meatyturtle"},"content":"public class ConfirmDelete {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"meatyturtle"},"content":" public static final String MESSAGE_CONFIRM_DELETE \u003d \"Are you sure you want to delete Person: %1$s ?\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"meatyturtle"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"meatyturtle"},"content":" * Displays a confirmation dialog to prompt the user to confirm the deletion.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"meatyturtle"},"content":" * @param personToDelete The person the user wants to delete","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"meatyturtle"},"content":" * @return Whether the deletion proceeds or not","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"meatyturtle"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"meatyturtle"},"content":" public static boolean showConfirmationDialog(Person personToDelete) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"meatyturtle"},"content":" Alert alert \u003d new Alert(Alert.AlertType.CONFIRMATION);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"meatyturtle"},"content":" alert.setTitle(\"Delete Confirmation\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"meatyturtle"},"content":" alert.setHeaderText(null);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"meatyturtle"},"content":" alert.setContentText(String.format(MESSAGE_CONFIRM_DELETE, Messages.format(personToDelete)));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"meatyturtle"},"content":" Optional\u003cButtonType\u003e result \u003d alert.showAndWait();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"meatyturtle"},"content":" return result.isPresent() \u0026\u0026 result.get() \u003d\u003d ButtonType.OK;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"meatyturtle"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"meatyturtle"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"meatyturtle"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"meatyturtle":30}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Shantaa"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Shantaa"},"content":" PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Shantaa"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Shantaa"},"content":" PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Shantaa"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Shantaa"},"content":" PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Shantaa"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, false);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"-":57,"Shantaa":7}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.PaidCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.UnpaidCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Justin-Aw46"},"content":" case PaidCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Justin-Aw46"},"content":" return new PaidCommandParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Justin-Aw46"},"content":" case UnpaidCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Justin-Aw46"},"content":" return new UnpaidCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":8,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"fymbc"},"content":" return new FindCommand(new PersonContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"-":31,"fymbc":2}},{"path":"src/main/java/seedu/address/logic/parser/PaidCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.PaidCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.PaidCommand.PaidPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Justin-Aw46"},"content":" * Parses input arguments and creates a new PaidCommand object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Justin-Aw46"},"content":"public class PaidCommandParser implements Parser\u003cPaidCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Justin-Aw46"},"content":" * Parses the given {@code String} of arguments in the context of the PaidCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Justin-Aw46"},"content":" * and returns a PaidCommand object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Justin-Aw46"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Justin-Aw46"},"content":" public PaidCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Justin-Aw46"},"content":" try {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Justin-Aw46"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Justin-Aw46"},"content":" PaidPersonDescriptor paidPersonDescriptor \u003d new PaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Justin-Aw46"},"content":" paidPersonDescriptor.setHasPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Justin-Aw46"},"content":" return new PaidCommand(index, paidPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Justin-Aw46"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Justin-Aw46"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Justin-Aw46"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, PaidCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Justin-Aw46"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":32}},{"path":"src/main/java/seedu/address/logic/parser/UnpaidCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.UnpaidCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.UnpaidCommand.UnpaidPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Justin-Aw46"},"content":" * Parses input arguments and creates a new UnpaidCommand object","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Justin-Aw46"},"content":"public class UnpaidCommandParser implements Parser\u003cUnpaidCommand\u003e {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Justin-Aw46"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Justin-Aw46"},"content":" * Parses the given {@code String} of arguments in the context of the UnpaidCommand","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Justin-Aw46"},"content":" * and returns a UnpaidCommand object for execution.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Justin-Aw46"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Justin-Aw46"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Justin-Aw46"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Justin-Aw46"},"content":" public UnpaidCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Justin-Aw46"},"content":" try {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Justin-Aw46"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidPersonDescriptor unpaidPersonDescriptor \u003d new UnpaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Justin-Aw46"},"content":" unpaidPersonDescriptor.setHasNotPaid(); // Change this to false for Unpaid","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Justin-Aw46"},"content":" return new UnpaidCommand(index, unpaidPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Justin-Aw46"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Justin-Aw46"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Justin-Aw46"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnpaidCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Justin-Aw46"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":32}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"meatyturtle"},"content":" requireNonNull(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"meatyturtle":1,"-":148}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Shantaa"},"content":" private final Boolean hasPaid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Shantaa"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, Boolean hasPaid) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Shantaa"},"content":" requireAllNonNull(name, phone, email, address, tags, hasPaid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Shantaa"},"content":" this.hasPaid \u003d hasPaid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Shantaa"},"content":" public Boolean getHasPaid() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Shantaa"},"content":" return hasPaid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Shantaa"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Shantaa"},"content":" \u0026\u0026 hasPaid.equals(otherPerson.hasPaid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Shantaa"},"content":" return Objects.hash(name, phone, email, address, tags, hasPaid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Shantaa"},"content":" .add(\"hasPaid\", hasPaid)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":113,"Shantaa":13}},{"path":"src/main/java/seedu/address/model/person/PersonContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"fymbc"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"fymbc"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"fymbc"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"fymbc"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"fymbc"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"fymbc"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"fymbc"},"content":" * Tests that a {@code Person}\u0027s {@code Name}, {@code Phone}, {@code Email}, {@code Address},","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"fymbc"},"content":" * or {@code Tags} match any of the keywords given.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"fymbc"},"content":"public class PersonContainsKeywordsPredicate implements Predicate\u003cPerson\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"fymbc"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"fymbc"},"content":" public PersonContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"fymbc"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"fymbc"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"fymbc"},"content":" public boolean test(Person person) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"fymbc"},"content":" return keywords.stream()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"fymbc"},"content":" .anyMatch(keyword -\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"fymbc"},"content":" StringUtil.containsWordIgnoreCase(person.getName().fullName, keyword)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"fymbc"},"content":" || StringUtil.containsWordIgnoreCase(person.getPhone().toString(), keyword)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"fymbc"},"content":" || StringUtil.containsWordIgnoreCase(person.getEmail().toString(), keyword)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"fymbc"},"content":" || StringUtil.containsWordIgnoreCase(person.getAddress().toString(), keyword)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"fymbc"},"content":" || person.getTags().stream()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"fymbc"},"content":" .anyMatch(tag -\u003e StringUtil.containsWordIgnoreCase(tag.toString(), keyword))","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"fymbc"},"content":" );","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"fymbc"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"fymbc"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"fymbc"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"fymbc"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"fymbc"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"fymbc"},"content":" if (!(other instanceof PersonContainsKeywordsPredicate)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"fymbc"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate otherPersonContainsKeywordsPredicate \u003d (PersonContainsKeywordsPredicate) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"fymbc"},"content":" return keywords.equals(otherPersonContainsKeywordsPredicate.keywords);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"fymbc"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"fymbc"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"fymbc"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"fymbc"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"fymbc":52}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"friends\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"colleagues\", \"friends\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"neighbours\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"family\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"classmates\"), false),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Shantaa"},"content":" getTagSet(\"colleagues\"), false)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"-":54,"Shantaa":6}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Shantaa"},"content":" private final String hasPaid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Shantaa"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"hasPaid\") String hasPaid) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Shantaa"},"content":" this.hasPaid \u003d hasPaid;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Shantaa"},"content":" hasPaid \u003d source.getHasPaid().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Shantaa"},"content":" if (hasPaid \u003d\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Shantaa"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"hasPaid\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Shantaa"},"content":" Boolean modelHasPaid \u003d hasPaid.equals(\"true\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Shantaa"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags, modelHasPaid);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":107,"Shantaa":12}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Shantaa"},"content":" public static final String VALID_HASPAID_FALSE \u003d \"false\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Shantaa"},"content":" .withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Shantaa"},"content":" .withHasPaid(Boolean.parseBoolean(VALID_HASPAID_FALSE)).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Shantaa"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Shantaa"},"content":" .withHasPaid(Boolean.parseBoolean(VALID_HASPAID_FALSE)).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"fymbc"},"content":" model.updateFilteredPersonList(new PersonContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"-":123,"fymbc":2,"Shantaa":5}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"meatyturtle"},"content":" * For testing purposes, mock ConfirmDelete to always return true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"meatyturtle"},"content":" deleteCommand.setConfirmed(true); // bypasses the user confirmation","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"meatyturtle"},"content":" deleteCommand.setConfirmed(true);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"meatyturtle"},"content":" deleteCommand.setConfirmed(true);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"meatyturtle"},"content":" deleteCommand.setConfirmed(true);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"meatyturtle":5,"-":118}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Shantaa"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", hasPaid\u003d\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Shantaa"},"content":" + editPersonDescriptor.getHasPaid().orElse(null) + \"}\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":70,"Shantaa":2}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"fymbc"},"content":" new PersonContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"fymbc"},"content":" new PersonContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"fymbc"},"content":" * Parses {@code userInput} into a {@code PersonContainsKeywordsPredicate}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"fymbc"},"content":" private PersonContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"fymbc"},"content":" return new PersonContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"-":80,"fymbc":11}},{"path":"src/test/java/seedu/address/logic/commands/PaidCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Justin-Aw46"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Justin-Aw46"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Justin-Aw46"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Justin-Aw46"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Justin-Aw46"},"content":"public class PaidCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Justin-Aw46"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Justin-Aw46"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Justin-Aw46"},"content":" Person personToMarkPaid \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand.PaidPersonDescriptor descriptor \u003d new PaidCommand.PaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand paidCommand \u003d new PaidCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Justin-Aw46"},"content":" String expectedMessage \u003d String.format(PaidCommand.MESSAGE_PAID_PERSON_SUCCESS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Justin-Aw46"},"content":" Messages.format(personToMarkPaid));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Justin-Aw46"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Justin-Aw46"},"content":" Person editedPerson \u003d new Person(personToMarkPaid.getName(), personToMarkPaid.getPhone(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Justin-Aw46"},"content":" personToMarkPaid.getEmail(), personToMarkPaid.getAddress(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Justin-Aw46"},"content":" personToMarkPaid.getTags(), true);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Justin-Aw46"},"content":" expectedModel.setPerson(personToMarkPaid, editedPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Justin-Aw46"},"content":" assertCommandSuccess(paidCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Justin-Aw46"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Justin-Aw46"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand.PaidPersonDescriptor descriptor \u003d new PaidCommand.PaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand paidCommand \u003d new PaidCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Justin-Aw46"},"content":" assertCommandFailure(paidCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Justin-Aw46"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Justin-Aw46"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Justin-Aw46"},"content":" Person personToMarkPaid \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand.PaidPersonDescriptor descriptor \u003d new PaidCommand.PaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand paidCommand \u003d new PaidCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Justin-Aw46"},"content":" String expectedMessage \u003d String.format(PaidCommand.MESSAGE_PAID_PERSON_SUCCESS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Justin-Aw46"},"content":" Messages.format(personToMarkPaid));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Justin-Aw46"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Justin-Aw46"},"content":" Person paidPerson \u003d new Person(personToMarkPaid.getName(), personToMarkPaid.getPhone(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Justin-Aw46"},"content":" personToMarkPaid.getEmail(), personToMarkPaid.getAddress(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Justin-Aw46"},"content":" personToMarkPaid.getTags(), true);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Justin-Aw46"},"content":" expectedModel.setPerson(personToMarkPaid, paidPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Justin-Aw46"},"content":" assertCommandSuccess(paidCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Justin-Aw46"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Justin-Aw46"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Justin-Aw46"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand.PaidPersonDescriptor descriptor \u003d new PaidCommand.PaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand paidCommand \u003d new PaidCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Justin-Aw46"},"content":" assertCommandFailure(paidCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Justin-Aw46"},"content":" public void equals() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand.PaidPersonDescriptor descriptor \u003d new PaidCommand.PaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand paidFirstCommand \u003d new PaidCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand paidSecondCommand \u003d new PaidCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Justin-Aw46"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(paidFirstCommand.equals(paidFirstCommand));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Justin-Aw46"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand paidFirstCommandCopy \u003d new PaidCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(paidFirstCommand.equals(paidFirstCommandCopy));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Justin-Aw46"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Justin-Aw46"},"content":" assertFalse(paidFirstCommand.equals(1));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Justin-Aw46"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Justin-Aw46"},"content":" assertFalse(paidFirstCommand.equals(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Justin-Aw46"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Justin-Aw46"},"content":" assertFalse(paidFirstCommand.equals(paidSecondCommand));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Justin-Aw46"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Justin-Aw46"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand.PaidPersonDescriptor descriptor \u003d new PaidCommand.PaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand paidCommand \u003d new PaidCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Justin-Aw46"},"content":" String expected \u003d PaidCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Justin-Aw46"},"content":" assertEquals(expected, paidCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Justin-Aw46"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Justin-Aw46"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Justin-Aw46"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":132}},{"path":"src/test/java/seedu/address/logic/commands/UnpaidCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Justin-Aw46"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Justin-Aw46"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Justin-Aw46"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Justin-Aw46"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Justin-Aw46"},"content":"public class UnpaidCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Justin-Aw46"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Justin-Aw46"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Justin-Aw46"},"content":" Person personToMarkUnpaid \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand.UnpaidPersonDescriptor descriptor \u003d new UnpaidCommand.UnpaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasNotPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand unpaidCommand \u003d new UnpaidCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Justin-Aw46"},"content":" String expectedMessage \u003d String.format(UnpaidCommand.MESSAGE_UNPAID_PERSON_SUCCESS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Justin-Aw46"},"content":" Messages.format(personToMarkUnpaid));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Justin-Aw46"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Justin-Aw46"},"content":" Person editedPerson \u003d new Person(personToMarkUnpaid.getName(), personToMarkUnpaid.getPhone(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Justin-Aw46"},"content":" personToMarkUnpaid.getEmail(), personToMarkUnpaid.getAddress(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Justin-Aw46"},"content":" personToMarkUnpaid.getTags(), false);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Justin-Aw46"},"content":" expectedModel.setPerson(personToMarkUnpaid, editedPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Justin-Aw46"},"content":" assertCommandSuccess(unpaidCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Justin-Aw46"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Justin-Aw46"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand.UnpaidPersonDescriptor descriptor \u003d new UnpaidCommand.UnpaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasNotPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand unpaidCommand \u003d new UnpaidCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Justin-Aw46"},"content":" assertCommandFailure(unpaidCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Justin-Aw46"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Justin-Aw46"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Justin-Aw46"},"content":" Person personToMarkUnpaid \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand.UnpaidPersonDescriptor descriptor \u003d new UnpaidCommand.UnpaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasNotPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand unpaidCommand \u003d new UnpaidCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Justin-Aw46"},"content":" String expectedMessage \u003d String.format(UnpaidCommand.MESSAGE_UNPAID_PERSON_SUCCESS,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Justin-Aw46"},"content":" Messages.format(personToMarkUnpaid));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Justin-Aw46"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Justin-Aw46"},"content":" Person editedPerson \u003d new Person(personToMarkUnpaid.getName(), personToMarkUnpaid.getPhone(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Justin-Aw46"},"content":" personToMarkUnpaid.getEmail(), personToMarkUnpaid.getAddress(),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Justin-Aw46"},"content":" personToMarkUnpaid.getTags(), false);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Justin-Aw46"},"content":" expectedModel.setPerson(personToMarkUnpaid, editedPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Justin-Aw46"},"content":" assertCommandSuccess(unpaidCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Justin-Aw46"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Justin-Aw46"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Justin-Aw46"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand.UnpaidPersonDescriptor descriptor \u003d new UnpaidCommand.UnpaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasNotPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand unpaidCommand \u003d new UnpaidCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Justin-Aw46"},"content":" assertCommandFailure(unpaidCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Justin-Aw46"},"content":" public void equals() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand.UnpaidPersonDescriptor descriptor \u003d new UnpaidCommand.UnpaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasNotPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand unpaidFirstCommand \u003d new UnpaidCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand unpaidSecondCommand \u003d new UnpaidCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Justin-Aw46"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(unpaidFirstCommand.equals(unpaidFirstCommand));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Justin-Aw46"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand unpaidFirstCommandCopy \u003d new UnpaidCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(unpaidFirstCommand.equals(unpaidFirstCommandCopy));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Justin-Aw46"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Justin-Aw46"},"content":" assertFalse(unpaidFirstCommand.equals(1));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Justin-Aw46"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Justin-Aw46"},"content":" assertFalse(unpaidFirstCommand.equals(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Justin-Aw46"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Justin-Aw46"},"content":" assertFalse(unpaidFirstCommand.equals(unpaidSecondCommand));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Justin-Aw46"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Justin-Aw46"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand.UnpaidPersonDescriptor descriptor \u003d new UnpaidCommand.UnpaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Justin-Aw46"},"content":" descriptor.setHasNotPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand unpaidCommand \u003d new UnpaidCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Justin-Aw46"},"content":" String expected \u003d UnpaidCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Justin-Aw46"},"content":" assertEquals(expected, unpaidCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Justin-Aw46"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Justin-Aw46"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Justin-Aw46"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":131}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Shantaa"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Shantaa"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Shantaa"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Shantaa"},"content":" PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Shantaa"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Shantaa"},"content":" + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Shantaa"},"content":" + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"Shantaa"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"Shantaa"},"content":" + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"-":187,"Shantaa":18}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Shantaa"},"content":"//import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Shantaa"},"content":"//import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.PaidCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.UnpaidCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Shantaa"},"content":"//import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Shantaa"},"content":" // @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Shantaa"},"content":" // public void parseCommand_edit() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Shantaa"},"content":" // Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Shantaa"},"content":" // EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Shantaa"},"content":" // EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Shantaa"},"content":" // + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Shantaa"},"content":" // assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Shantaa"},"content":" // }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"fymbc"},"content":" assertEquals(new FindCommand(new PersonContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Justin-Aw46"},"content":" public void parseCommand_paid() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(parser.parseCommand(\"paid 1\") instanceof PaidCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(parser.parseCommand(\"paid 2\") instanceof PaidCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Justin-Aw46"},"content":" public void parseCommand_unpaid() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(parser.parseCommand(\"unpaid 1\") instanceof UnpaidCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Justin-Aw46"},"content":" assertTrue(parser.parseCommand(\"unpaid 2\") instanceof UnpaidCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":14,"-":88,"Shantaa":11,"fymbc":2}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"fymbc"},"content":" new FindCommand(new PersonContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"-":32,"fymbc":2}},{"path":"src/test/java/seedu/address/logic/parser/PaidCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Justin-Aw46"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.PaidCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Justin-Aw46"},"content":"public class PaidCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Justin-Aw46"},"content":" private PaidCommandParser parser \u003d new PaidCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Justin-Aw46"},"content":" public void parse_validArgs_returnsPaidCommand() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Justin-Aw46"},"content":" PaidCommand.PaidPersonDescriptor paidPersonDescriptor \u003d new PaidCommand.PaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Justin-Aw46"},"content":" paidPersonDescriptor.setHasPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Justin-Aw46"},"content":" assertParseSuccess(parser, \"1\", new PaidCommand(INDEX_FIRST_PERSON, paidPersonDescriptor));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Justin-Aw46"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Justin-Aw46"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, PaidCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Justin-Aw46"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":28}},{"path":"src/test/java/seedu/address/logic/parser/UnpaidCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Justin-Aw46"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Justin-Aw46"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Justin-Aw46"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Justin-Aw46"},"content":"import seedu.address.logic.commands.UnpaidCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Justin-Aw46"},"content":"public class UnpaidCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Justin-Aw46"},"content":" private UnpaidCommandParser parser \u003d new UnpaidCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Justin-Aw46"},"content":" public void parse_validArgs_returnsPaidCommand() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Justin-Aw46"},"content":" UnpaidCommand.UnpaidPersonDescriptor unpaidPersonDescriptor \u003d new UnpaidCommand.UnpaidPersonDescriptor();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Justin-Aw46"},"content":" unpaidPersonDescriptor.setHasNotPaid();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Justin-Aw46"},"content":" assertParseSuccess(parser, \"1\", new UnpaidCommand(INDEX_FIRST_PERSON, unpaidPersonDescriptor));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Justin-Aw46"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Justin-Aw46"},"content":" @Test","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Justin-Aw46"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Justin-Aw46"},"content":" assertParseFailure(parser, \"a\", String.format(MESSAGE_INVALID_COMMAND_FORMAT, UnpaidCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Justin-Aw46"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Justin-Aw46"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"Justin-Aw46":28}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":"import seedu.address.model.person.PersonContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"fymbc"},"content":" modelManager.updateFilteredPersonList(new PersonContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"-":130,"fymbc":2}},{"path":"src/test/java/seedu/address/model/person/PersonContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"fymbc"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"fymbc"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"fymbc"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"fymbc"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"fymbc"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"fymbc"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"fymbc"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"fymbc"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"fymbc"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"fymbc"},"content":"public class PersonContainsKeywordsPredicateTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"fymbc"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"fymbc"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"fymbc"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"fymbc"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate firstP \u003d new PersonContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate secondP \u003d new PersonContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"fymbc"},"content":" // sam","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"fymbc"},"content":" // e object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"fymbc"},"content":" assertTrue(firstP.equals(firstP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"fymbc"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate firstPCopy \u003d new PersonContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"fymbc"},"content":" assertTrue(firstP.equals(firstPCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"fymbc"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"fymbc"},"content":" assertFalse(firstP.equals(1));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"fymbc"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"fymbc"},"content":" assertFalse(firstP.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"fymbc"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"fymbc"},"content":" assertFalse(firstP.equals(secondP));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"fymbc"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"fymbc"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"fymbc"},"content":" // One keyword","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d new PersonContainsKeywordsPredicate(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"fymbc"},"content":" Collections.singletonList(\"Alice\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"fymbc"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"fymbc"},"content":" // Multiple keywords","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"fymbc"},"content":" predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"fymbc"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"fymbc"},"content":" // Only one matching keyword","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"fymbc"},"content":" predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"fymbc"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"fymbc"},"content":" // Mixed-case keywords","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"fymbc"},"content":" predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"fymbc"},"content":" assertTrue(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"fymbc"},"content":" //To be fixed in v1.3","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"fymbc"},"content":" //","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"fymbc"},"content":" // @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"fymbc"},"content":" // public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"fymbc"},"content":" // // Zero keywords","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"fymbc"},"content":" // PersonContainsKeywordsPredicate predicate \u003d new PersonContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"fymbc"},"content":" // assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"fymbc"},"content":" //","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"fymbc"},"content":" // // Non-matching keyword","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"fymbc"},"content":" // predicate \u003d new PersonContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"fymbc"},"content":" // assertFalse(predicate.test(new PersonBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"fymbc"},"content":" //","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"fymbc"},"content":" // // Keywords match phone, email and address, but does not match name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"fymbc"},"content":" // predicate \u003d new PersonContainsKeywordsPredicate(Arrays.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"fymbc"},"content":" // asList(\"12345\", \"alice@email.com\", \"Main\", \"Street\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"fymbc"},"content":" // assertFalse(predicate.test(new PersonBuilder().withName(\"Alice\").withPhone(\"12345\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"fymbc"},"content":" // .withEmail(\"alice@email.com\").withAddress(\"Main Street\").build()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"fymbc"},"content":" // }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"fymbc"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"fymbc"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"fymbc"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"fymbc"},"content":" PersonContainsKeywordsPredicate predicate \u003d new PersonContainsKeywordsPredicate(keywords);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"fymbc"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"fymbc"},"content":" String expected \u003d PersonContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"fymbc"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"fymbc"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"fymbc"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"fymbc":90}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Shantaa"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Shantaa"},"content":" + \", tags\u003d\" + ALICE.getTags() + \", hasPaid\u003d\" + ALICE.getHasPaid() + \"}\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"-":98,"Shantaa":2}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Shantaa"},"content":" private static final String VALID_HASPAID \u003d BENSON.getHasPaid().toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Shantaa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Shantaa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Shantaa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Shantaa"},"content":" INVALID_ADDRESS, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Shantaa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Shantaa"},"content":" null, VALID_TAGS, VALID_HASPAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Shantaa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Shantaa"},"content":" VALID_ADDRESS, invalidTags, VALID_HASPAID);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":101,"Shantaa":19}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Shantaa"},"content":" descriptor.setHasPaid(person.getHasPaid());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Shantaa"},"content":" // check here","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Shantaa"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Shantaa"},"content":" * Sets the {@code HasPaid} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Shantaa"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Shantaa"},"content":" public EditPersonDescriptorBuilder withHasPaid(Boolean hasPaid) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Shantaa"},"content":" descriptor.setHasPaid(hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Shantaa"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":87,"Shantaa":10}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Shantaa"},"content":" public static final Boolean DEFAULT_HASPAID \u003d false;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Shantaa"},"content":" private Boolean hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Shantaa"},"content":" hasPaid \u003d DEFAULT_HASPAID;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Shantaa"},"content":" hasPaid \u003d personToCopy.getHasPaid();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Shantaa"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Shantaa"},"content":" * Sets the {@code hasPaid} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Shantaa"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Shantaa"},"content":" public PersonBuilder withHasPaid(Boolean hasPaid) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Shantaa"},"content":" this.hasPaid \u003d hasPaid;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Shantaa"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Shantaa"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Shantaa"},"content":" return new Person(name, phone, email, address, tags, hasPaid);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"-":95,"Shantaa":13}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Shantaa"},"content":" //Paid field not appended as add command does not include a paid prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Shantaa"},"content":" //acceptable as this method is only used in the testing of add command","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Shantaa"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Shantaa"},"content":" //Paid field not appended as edit command does not allow changing of paid status","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Shantaa"},"content":" //acceptable as this method is only used in the testing of edit command","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"-":62,"Shantaa":5}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Shantaa"},"content":" .withTags(\"friends\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Shantaa"},"content":" .withTags(\"owesMoney\", \"friends\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Shantaa"},"content":" .withTags(\"friends\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Shantaa"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\").withHasPaid(false).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Shantaa"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Shantaa"},"content":" .withTags(VALID_TAG_FRIEND).withHasPaid(false).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Shantaa"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Shantaa"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withHasPaid(false).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"-":64,"Shantaa":14}}] diff --git a/AY2425S1-CS2103T-F14b-4_tp_master/commits.json b/AY2425S1-CS2103T-F14b-4_tp_master/commits.json index 8877c100..74d268f3 100644 --- a/AY2425S1-CS2103T-F14b-4_tp_master/commits.json +++ b/AY2425S1-CS2103T-F14b-4_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Justin-Aw46":[{"date":"2024-10-01","commitResults":[{"hash":"db24abe7213561df616ece87737058fcee0af9b7","isMergeCommit":false,"messageTitle":"Add Justin info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"0e6be4680feba69f0c02601dac527002bb1d482b","isMergeCommit":false,"messageTitle":"Edit role","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"b00418c3c54b04e02df2f075ca714718f591f223","isMergeCommit":false,"messageTitle":"Change position of profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}}]},{"date":"2024-10-03","commitResults":[{"hash":"f7bf71bf36ff2735cfd88f3772e995f2c06f5d04","isMergeCommit":false,"messageTitle":"Change title and repository address","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"b013d0fc9ca7177cd73b3b9dcedd9c44b9016da2","isMergeCommit":false,"messageTitle":"Edit repository address","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}}]}],"meatyturtle":[{"date":"2024-10-01","commitResults":[{"hash":"335f777ca4df3ba983991b5554720df824d27018","isMergeCommit":false,"messageTitle":"Add Qiao Yi\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"dfa07eccb3dcfc074d994cf1fa119928bed36c8d","isMergeCommit":false,"messageTitle":"Add Qiao Yi\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-03","commitResults":[{"hash":"b06a61691c42b86a5623a83e254bfe8f947dd6d1","isMergeCommit":false,"messageTitle":"Update DG (NFRs and Glossary)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":5}}},{"hash":"81a71f40ba99ce73e778aaae5349b76a589b0d11","isMergeCommit":true,"messageTitle":"Merge pull request #28 from AlphaPyke/cleanup1","messageBody":"Tidy up AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"0248c5f3aa31293607d1777448b306d39424a98d","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Justin-Aw46/update-site-wide-settings","messageBody":"Update site wide settings","fileTypesAndContributionMap":{}},{"hash":"921a6d205b7c1c8b68f63e9733b1b55a5509d015","isMergeCommit":true,"messageTitle":"Merge pull request #27 from meatyturtle/dev-guide","messageBody":"Update DG (NFRs and Glossary)","fileTypesAndContributionMap":{}},{"hash":"d6a17c55b8113670afbd2e4a430828f3768a5af5","isMergeCommit":true,"messageTitle":"Merge pull request #29 from fymbc/update-readme","messageBody":"Update README file","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"bafd2f5678f0e46ca27c954185a020212d1a5e0f","isMergeCommit":true,"messageTitle":"Merge pull request #32 from Shantaa/update-dg-v1.1","messageBody":"Update DG (Use cases and user stories)","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"7e9f51589c41c376039846528edb482314592c14","isMergeCommit":true,"messageTitle":"Merge pull request #46 from Shantaa/update-person-class-v2","messageBody":"Update Person Class","fileTypesAndContributionMap":{}},{"hash":"328bda547d9e0b4ba375acadd57859f5de56b800","isMergeCommit":true,"messageTitle":"Merge pull request #43 from AlphaPyke/cleanup2","messageBody":"Refine index.md and AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"204eabc34a75c6be630e063077c95db2202257ac","isMergeCommit":false,"messageTitle":"Add Delete Confirmation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":1},"test-code":{"insertions":5,"deletions":2}}}]}],"AlphaPyke":[{"date":"2024-10-01","commitResults":[{"hash":"50d70b8616489c5ac4e8a811bd7e8ab8a49c0818","isMergeCommit":false,"messageTitle":"Add Joshua\u0027s photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9d77635e7caecd51f7dfcbd38ccd9e7c72080393","isMergeCommit":false,"messageTitle":"Add Joshua\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-10-03","commitResults":[{"hash":"5e7465fc3da90b570258a5f4c41f26dbe84cc026","isMergeCommit":false,"messageTitle":"Tidy up AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-10-05","commitResults":[{"hash":"5c14ea7839f4fc40213424f3de40b02e823cc289","isMergeCommit":false,"messageTitle":"Refine index.md and AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":8}}}]},{"date":"2024-10-10","commitResults":[{"hash":"e905e9caa4899bb1cfe0730546f28ded8763aea7","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":60,"deletions":23}}}]}],"fymbc":[{"date":"2024-10-01","commitResults":[{"hash":"5d90165ab44faab14d8bb88b748be36da9b77f4e","isMergeCommit":true,"messageTitle":"Merge pull request #10 from AlphaPyke/Image","messageBody":"Add Joshua\u0027s image","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"d08a7da6366907c9ae9837cd5bef2a14d0a6c057","isMergeCommit":false,"messageTitle":"Add Wei Xuan\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"51a7b6f58b2b3de3c245aa594178c184cacd8655","isMergeCommit":true,"messageTitle":"Merge pull request #16 from Justin-Aw46/add-justin-info","messageBody":"Add Justin info","fileTypesAndContributionMap":{}},{"hash":"a41bab8a92c152318581b080bfa31e994bd3f0b4","isMergeCommit":true,"messageTitle":"Merge pull request #17 from AlphaPyke/aboutus","messageBody":"Add Joshua\u0027s info","fileTypesAndContributionMap":{}},{"hash":"0dc1174b7d07cef1bb60dcce539e72a1e340f9a7","isMergeCommit":true,"messageTitle":"Merge pull request #18 from Shantaa/add-shane-info","messageBody":"Add Shane\u0027s info","fileTypesAndContributionMap":{}},{"hash":"7519907714ae8a61294df2f65f0e3ef06c24ceba","isMergeCommit":true,"messageTitle":"Merge pull request #19 from meatyturtle/add-info","messageBody":"Add Qiao Yi\u0027s info","fileTypesAndContributionMap":{}},{"hash":"0795881bc0003df9c67bd8be292cf7381173f479","isMergeCommit":true,"messageTitle":"Merge pull request #20 from fymbc/add-wx-info","messageBody":"Add Wei Xuan\u0027s info","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"aea0733bca1afd5c7425062c641edb635fdffb08","isMergeCommit":false,"messageTitle":"Update README file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":10}}},{"hash":"efaca63371bd00abd01dbcfd820bc45acd43d54b","isMergeCommit":false,"messageTitle":"Update README to fix Java CI","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"d3d627bf6f161b798fdc487e813e0db8040dcef6","isMergeCommit":false,"messageTitle":"Evolve Find command partially","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":53},"test-code":{"insertions":109,"deletions":104}}},{"hash":"edc33c8da470b0d494c31288a8707de8d4ab5767","isMergeCommit":true,"messageTitle":"Merge pull request #48 from meatyturtle/confirm-delete","messageBody":"Add Delete Confirmation","fileTypesAndContributionMap":{}},{"hash":"d09661e23fe3d1674c84af216282b6b1d4833e52","isMergeCommit":true,"messageTitle":"Merge pull request #51 from fymbc/find-command","messageBody":"Evolve Find command partially","fileTypesAndContributionMap":{}},{"hash":"ca316eb09d8dc9d7364fe944fb367966b8b03c44","isMergeCommit":true,"messageTitle":"Merge pull request #52 from AlphaPyke/userguide1","messageBody":"Update User Guide","fileTypesAndContributionMap":{}}]}],"Shantaa":[{"date":"2024-10-01","commitResults":[{"hash":"7eb1da1c9d9f5f5bc3d1207435720cf99ba0af78","isMergeCommit":false,"messageTitle":"add shane\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-10-04","commitResults":[{"hash":"ce2fc1b7640e77e6686092efb3664b3d67d871f3","isMergeCommit":false,"messageTitle":"update dg first two points","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":104,"deletions":19}}}]},{"date":"2024-10-05","commitResults":[{"hash":"dbf56176c889a90a8002b8e994c92f4cf0042925","isMergeCommit":false,"messageTitle":"update person class version 2","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":20},"test-code":{"insertions":98,"deletions":42}}},{"hash":"930daec89da6d7ce95d256aed17b744cfda2a17d","isMergeCommit":false,"messageTitle":"fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"a9f0c08c5bc2fce7848034e715a65d5356577711","isMergeCommit":false,"messageTitle":"fix more checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"799b3d143f62a30f0c32d5c4d77653e7de8138e2","isMergeCommit":false,"messageTitle":"fix even more checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":11}}},{"hash":"7788864c182df22fa9288fb32da86524b6523416","isMergeCommit":false,"messageTitle":"fix even more checkstyle errors yet again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-10-06","commitResults":[{"hash":"2ea2ac7895ab43e0dae87957b9990f89d4df2518","isMergeCommit":false,"messageTitle":"update paid variable to hasPaid","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":37},"test-code":{"insertions":65,"deletions":65}}},{"hash":"ab8bd12a710e67f65c71c23674a73f6fa376d099","isMergeCommit":false,"messageTitle":"fix checkstyle errors again","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":3,"deletions":3}}},{"hash":"72eda19b6aba921678313f5c0c3c5c2374b6726d","isMergeCommit":false,"messageTitle":"fix more checkstyle errors again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"439b50dc49f3327514bd472f5695c400650e4f4b","isMergeCommit":false,"messageTitle":"fix more checkstyle errors again and yet again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"Justin-Aw46":{"docs":4,"functional-code":0,"test-code":0,"other":2},"meatyturtle":{"docs":25,"functional-code":47,"test-code":5},"AlphaPyke":{"docs":70,"functional-code":0,"test-code":0},"fymbc":{"docs":21,"functional-code":62,"test-code":109},"Shantaa":{"docs":100,"functional-code":60,"test-code":98}},"authorContributionVariance":{"Justin-Aw46":50.122444,"meatyturtle":165.10657,"AlphaPyke":315.48303,"fymbc":4859.2017,"Shantaa":5343.1333},"authorDisplayNameMap":{"Justin-Aw46":"CS2103T-F14b-4 AW J..STIN","meatyturtle":"CS2103T-F14b-4 LIM ..O YI","AlphaPyke":"CS2103T-F14b-4 JOSH..MING","fymbc":"CS2103T-F14b-4 TIEW..XUAN","Shantaa":"CS2103T-F14b-4 SHAN.. TAY"}} +{"authorDailyContributionsMap":{"Justin-Aw46":[{"date":"2024-10-01","commitResults":[{"hash":"db24abe7213561df616ece87737058fcee0af9b7","isMergeCommit":false,"messageTitle":"Add Justin info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"0e6be4680feba69f0c02601dac527002bb1d482b","isMergeCommit":false,"messageTitle":"Edit role","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"b00418c3c54b04e02df2f075ca714718f591f223","isMergeCommit":false,"messageTitle":"Change position of profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":9}}}]},{"date":"2024-10-03","commitResults":[{"hash":"f7bf71bf36ff2735cfd88f3772e995f2c06f5d04","isMergeCommit":false,"messageTitle":"Change title and repository address","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"b013d0fc9ca7177cd73b3b9dcedd9c44b9016da2","isMergeCommit":false,"messageTitle":"Edit repository address","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"b2360b36df1f929e79d7badf9b4d3801fac379dd","isMergeCommit":false,"messageTitle":"Add PaidCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":0}}},{"hash":"5d83cce79084de2979c03758f227e109e6bcc889","isMergeCommit":false,"messageTitle":"Add PaidCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"aff2252e39d67a5c042bbf9ede5b8c3adab25c43","isMergeCommit":false,"messageTitle":"Add paid command to addressbookparser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"1cca2f57a330375bee0caa4ca1de1298e293313b","isMergeCommit":false,"messageTitle":"Tidy up lines in editcommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"c5cf13f02b60c8c46b5b730d011a63e7c2b9cb09","isMergeCommit":false,"messageTitle":"Add Paid case to addressbookparser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"d73722b24fec3fbfd987677f45f1105960db31b7","isMergeCommit":false,"messageTitle":"Edit the input arguments for PaidCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"5938fce4fcb252e6025ada0115b8d249b9e149fc","isMergeCommit":false,"messageTitle":"Create functionality for PaidCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":86,"deletions":0}}},{"hash":"adce82d1d29f3739f3d13a18c54a2789f9172aa5","isMergeCommit":false,"messageTitle":"Create functionality for PaidCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":1}}},{"hash":"0437eed89c9b407b53f49e62e2510a81d92332b2","isMergeCommit":false,"messageTitle":"Add unpaid prefix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"782673ac5340317b8f35096ae80b060d8c0ae17d","isMergeCommit":false,"messageTitle":"Add Unpaid command case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0}}},{"hash":"af7081f702293d75b65e26c61d2c4099d3f7abfc","isMergeCommit":false,"messageTitle":"Create UnpaidCommand class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":91,"deletions":0}}},{"hash":"a4e8b8254a90d2fc6904942975ea4e4fd7164d6d","isMergeCommit":false,"messageTitle":"Create UnpaidCommandParser class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":33,"deletions":0}}},{"hash":"45f68cc75387b630f312e2b471bb3c1c5e888917","isMergeCommit":false,"messageTitle":"Edit for style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"644ed47f65b7550c387cb1776b86694ac3057542","isMergeCommit":false,"messageTitle":"Remove unpaid command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":128}}},{"hash":"a58544da5db4a95c7377c5f14a7eee8f2fa0f805","isMergeCommit":false,"messageTitle":"Edit for style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":3}}},{"hash":"5beb5ba193c1229693be65973bc9938eae3e377a","isMergeCommit":false,"messageTitle":"Edit for style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"db2cb10cfb551e515bc3ed2da2169eb38f9fbda1","isMergeCommit":false,"messageTitle":"Edit for style","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}}]},{"date":"2024-10-11","commitResults":[{"hash":"d463cc7dc13a8ac81bc033f6cade4d185e246d84","isMergeCommit":false,"messageTitle":"Add unpaid command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"15b1a16f1a9ef72dccc0f6d61bcb6d62dea0009c","isMergeCommit":false,"messageTitle":"Override equals and toString method","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":23,"deletions":0}}},{"hash":"ff3032c5fe540d7b4e47760767721333b8ef480a","isMergeCommit":false,"messageTitle":"Finalise command files","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":149,"deletions":0},"test-code":{"insertions":258,"deletions":0}}},{"hash":"e542dac004e2b1a11dbe31d63786682862ec8a91","isMergeCommit":false,"messageTitle":"Add space for style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":0}}},{"hash":"d82d99172761a8193c60ca26a4b6a7b4d7d60180","isMergeCommit":false,"messageTitle":"Fix for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":21,"deletions":18}}},{"hash":"01f9efbe576212923f229fc329a80664b97ff568","isMergeCommit":false,"messageTitle":"Remove unused import","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"07483d0fd574c95c2d146c31361bec59dccffec5","isMergeCommit":false,"messageTitle":"Remove duplicated person check","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":11}}},{"hash":"3f38bd34d6b476b85e82cf797b60216b039ce946","isMergeCommit":false,"messageTitle":"Remove unpaid prefix","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"fdb08d9312ce2fc7256e8e80d434bc9f5306f96b","isMergeCommit":false,"messageTitle":"Update paid command with nested class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":30}}},{"hash":"b4d894783cba8b346e164df2eb3567546c8439ec","isMergeCommit":false,"messageTitle":"Update setpaid command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":6}}},{"hash":"9e9cecf01f08762f76edcb4cf3ce93dddfb3ef03","isMergeCommit":false,"messageTitle":"Add nested class UnpaidPersonDescriptor to UnpaidCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":70,"deletions":38}}},{"hash":"2760ad2465d59204a3a7a1fc8f06b1d297c5949c","isMergeCommit":false,"messageTitle":"Update paid and unpaid parser to handle new nested class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":8}}},{"hash":"9728e43ea5be0d079e494fa7da7cc853c5c45bab","isMergeCommit":false,"messageTitle":"Update tests in paid and unpaid command","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":27,"deletions":26}}},{"hash":"7df8c99012b71a3f0b102e95a92c129865a663d8","isMergeCommit":false,"messageTitle":"Add javadocs for each of the nested class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0}}},{"hash":"871535b6ba96cac9e65d6e14f49a439b51a8768a","isMergeCommit":false,"messageTitle":"Add testcase for paid and unpaid","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"d99bea4ed9bfb89a29db78704a02361b27355af3","isMergeCommit":false,"messageTitle":"Add PaidCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":0}}},{"hash":"86d7040f8bba29d6e269ae633dfd94fced6de981","isMergeCommit":false,"messageTitle":"Add UnpaidCommandParserTest","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":28,"deletions":0}}}]}],"meatyturtle":[{"date":"2024-10-01","commitResults":[{"hash":"335f777ca4df3ba983991b5554720df824d27018","isMergeCommit":false,"messageTitle":"Add Qiao Yi\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"dfa07eccb3dcfc074d994cf1fa119928bed36c8d","isMergeCommit":false,"messageTitle":"Add Qiao Yi\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-03","commitResults":[{"hash":"b06a61691c42b86a5623a83e254bfe8f947dd6d1","isMergeCommit":false,"messageTitle":"Update DG (NFRs and Glossary)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":21,"deletions":5}}},{"hash":"81a71f40ba99ce73e778aaae5349b76a589b0d11","isMergeCommit":true,"messageTitle":"Merge pull request #28 from AlphaPyke/cleanup1","messageBody":"Tidy up AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"0248c5f3aa31293607d1777448b306d39424a98d","isMergeCommit":true,"messageTitle":"Merge pull request #30 from Justin-Aw46/update-site-wide-settings","messageBody":"Update site wide settings","fileTypesAndContributionMap":{}},{"hash":"921a6d205b7c1c8b68f63e9733b1b55a5509d015","isMergeCommit":true,"messageTitle":"Merge pull request #27 from meatyturtle/dev-guide","messageBody":"Update DG (NFRs and Glossary)","fileTypesAndContributionMap":{}},{"hash":"d6a17c55b8113670afbd2e4a430828f3768a5af5","isMergeCommit":true,"messageTitle":"Merge pull request #29 from fymbc/update-readme","messageBody":"Update README file","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"bafd2f5678f0e46ca27c954185a020212d1a5e0f","isMergeCommit":true,"messageTitle":"Merge pull request #32 from Shantaa/update-dg-v1.1","messageBody":"Update DG (Use cases and user stories)","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"7e9f51589c41c376039846528edb482314592c14","isMergeCommit":true,"messageTitle":"Merge pull request #46 from Shantaa/update-person-class-v2","messageBody":"Update Person Class","fileTypesAndContributionMap":{}},{"hash":"328bda547d9e0b4ba375acadd57859f5de56b800","isMergeCommit":true,"messageTitle":"Merge pull request #43 from AlphaPyke/cleanup2","messageBody":"Refine index.md and AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"204eabc34a75c6be630e063077c95db2202257ac","isMergeCommit":false,"messageTitle":"Add Delete Confirmation","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":47,"deletions":1},"test-code":{"insertions":5,"deletions":2}}}]},{"date":"2024-10-12","commitResults":[{"hash":"a9a72107cdd877e37ab60604b930b62c13e7ff5f","isMergeCommit":true,"messageTitle":"Merge pull request #57 from Shantaa/remove-paid-prefix","messageBody":"Remove paid prefix","fileTypesAndContributionMap":{}},{"hash":"f74e5bcd68d9859df17de63b49869299d462d637","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-paid","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c786970c1b911b4e04c41bbe7df83531c9de3d18","isMergeCommit":true,"messageTitle":"Merge pull request #53 from Justin-Aw46/add-paid","messageBody":"Add paid/unpaid command","fileTypesAndContributionMap":{}}]}],"AlphaPyke":[{"date":"2024-10-01","commitResults":[{"hash":"50d70b8616489c5ac4e8a811bd7e8ab8a49c0818","isMergeCommit":false,"messageTitle":"Add Joshua\u0027s photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"9d77635e7caecd51f7dfcbd38ccd9e7c72080393","isMergeCommit":false,"messageTitle":"Add Joshua\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-10-03","commitResults":[{"hash":"5e7465fc3da90b570258a5f4c41f26dbe84cc026","isMergeCommit":false,"messageTitle":"Tidy up AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-10-05","commitResults":[{"hash":"5c14ea7839f4fc40213424f3de40b02e823cc289","isMergeCommit":false,"messageTitle":"Refine index.md and AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":8}}}]},{"date":"2024-10-10","commitResults":[{"hash":"e905e9caa4899bb1cfe0730546f28ded8763aea7","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":60,"deletions":23}}}]},{"date":"2024-10-12","commitResults":[{"hash":"0778637d822b0997628ccc1fad42c473a816db43","isMergeCommit":false,"messageTitle":"Update User Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":60,"deletions":23}}}]}],"fymbc":[{"date":"2024-10-01","commitResults":[{"hash":"5d90165ab44faab14d8bb88b748be36da9b77f4e","isMergeCommit":true,"messageTitle":"Merge pull request #10 from AlphaPyke/Image","messageBody":"Add Joshua\u0027s image","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"d08a7da6366907c9ae9837cd5bef2a14d0a6c057","isMergeCommit":false,"messageTitle":"Add Wei Xuan\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"51a7b6f58b2b3de3c245aa594178c184cacd8655","isMergeCommit":true,"messageTitle":"Merge pull request #16 from Justin-Aw46/add-justin-info","messageBody":"Add Justin info","fileTypesAndContributionMap":{}},{"hash":"a41bab8a92c152318581b080bfa31e994bd3f0b4","isMergeCommit":true,"messageTitle":"Merge pull request #17 from AlphaPyke/aboutus","messageBody":"Add Joshua\u0027s info","fileTypesAndContributionMap":{}},{"hash":"0dc1174b7d07cef1bb60dcce539e72a1e340f9a7","isMergeCommit":true,"messageTitle":"Merge pull request #18 from Shantaa/add-shane-info","messageBody":"Add Shane\u0027s info","fileTypesAndContributionMap":{}},{"hash":"7519907714ae8a61294df2f65f0e3ef06c24ceba","isMergeCommit":true,"messageTitle":"Merge pull request #19 from meatyturtle/add-info","messageBody":"Add Qiao Yi\u0027s info","fileTypesAndContributionMap":{}},{"hash":"0795881bc0003df9c67bd8be292cf7381173f479","isMergeCommit":true,"messageTitle":"Merge pull request #20 from fymbc/add-wx-info","messageBody":"Add Wei Xuan\u0027s info","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"aea0733bca1afd5c7425062c641edb635fdffb08","isMergeCommit":false,"messageTitle":"Update README file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":10}}},{"hash":"efaca63371bd00abd01dbcfd820bc45acd43d54b","isMergeCommit":false,"messageTitle":"Update README to fix Java CI","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"d3d627bf6f161b798fdc487e813e0db8040dcef6","isMergeCommit":false,"messageTitle":"Evolve Find command partially","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":53},"test-code":{"insertions":109,"deletions":104}}},{"hash":"edc33c8da470b0d494c31288a8707de8d4ab5767","isMergeCommit":true,"messageTitle":"Merge pull request #48 from meatyturtle/confirm-delete","messageBody":"Add Delete Confirmation","fileTypesAndContributionMap":{}},{"hash":"d09661e23fe3d1674c84af216282b6b1d4833e52","isMergeCommit":true,"messageTitle":"Merge pull request #51 from fymbc/find-command","messageBody":"Evolve Find command partially","fileTypesAndContributionMap":{}},{"hash":"ca316eb09d8dc9d7364fe944fb367966b8b03c44","isMergeCommit":true,"messageTitle":"Merge pull request #52 from AlphaPyke/userguide1","messageBody":"Update User Guide","fileTypesAndContributionMap":{}}]}],"Shantaa":[{"date":"2024-10-01","commitResults":[{"hash":"7eb1da1c9d9f5f5bc3d1207435720cf99ba0af78","isMergeCommit":false,"messageTitle":"add shane\u0027s info","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}}]},{"date":"2024-10-04","commitResults":[{"hash":"ce2fc1b7640e77e6686092efb3664b3d67d871f3","isMergeCommit":false,"messageTitle":"update dg first two points","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":104,"deletions":19}}}]},{"date":"2024-10-05","commitResults":[{"hash":"dbf56176c889a90a8002b8e994c92f4cf0042925","isMergeCommit":false,"messageTitle":"update person class version 2","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":62,"deletions":20},"test-code":{"insertions":98,"deletions":42}}},{"hash":"930daec89da6d7ce95d256aed17b744cfda2a17d","isMergeCommit":false,"messageTitle":"fix checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":4}}},{"hash":"a9f0c08c5bc2fce7848034e715a65d5356577711","isMergeCommit":false,"messageTitle":"fix more checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"799b3d143f62a30f0c32d5c4d77653e7de8138e2","isMergeCommit":false,"messageTitle":"fix even more checkstyle errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":11}}},{"hash":"7788864c182df22fa9288fb32da86524b6523416","isMergeCommit":false,"messageTitle":"fix even more checkstyle errors yet again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}}]},{"date":"2024-10-06","commitResults":[{"hash":"2ea2ac7895ab43e0dae87957b9990f89d4df2518","isMergeCommit":false,"messageTitle":"update paid variable to hasPaid","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":37},"test-code":{"insertions":65,"deletions":65}}},{"hash":"ab8bd12a710e67f65c71c23674a73f6fa376d099","isMergeCommit":false,"messageTitle":"fix checkstyle errors again","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":3,"deletions":3}}},{"hash":"72eda19b6aba921678313f5c0c3c5c2374b6726d","isMergeCommit":false,"messageTitle":"fix more checkstyle errors again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"439b50dc49f3327514bd472f5695c400650e4f4b","isMergeCommit":false,"messageTitle":"fix more checkstyle errors again and yet again","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":2}}}]},{"date":"2024-10-12","commitResults":[{"hash":"3b428c80f89411aecf7cf4e3c25f41c5e6ee4110","isMergeCommit":false,"messageTitle":"WIP: save current changes before merge","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":15},"test-code":{"insertions":27,"deletions":12}}},{"hash":"2d859f474c432455d704e6bc6a905b0c620ed715","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027 into remove-paid-prefix","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e325e3fa32699573e2478be1f102ea55380f7a11","isMergeCommit":false,"messageTitle":"fix my greatest enemy checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":31,"deletions":22}}},{"hash":"75803bfff44d6acc5b3954b7e8e56c44e598d800","isMergeCommit":false,"messageTitle":"defeat my greatest enemy checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}}]}]},"authorFileTypeContributionMap":{"Justin-Aw46":{"docs":4,"functional-code":368,"test-code":333,"other":2},"meatyturtle":{"docs":25,"functional-code":47,"test-code":5},"AlphaPyke":{"docs":70,"functional-code":0,"test-code":0},"fymbc":{"docs":21,"functional-code":62,"test-code":109},"Shantaa":{"docs":100,"functional-code":57,"test-code":99}},"authorContributionVariance":{"Justin-Aw46":35573.555,"meatyturtle":152.37428,"AlphaPyke":540.2987,"fymbc":4460.911,"Shantaa":5597.4443},"authorDisplayNameMap":{"Justin-Aw46":"CS2103T-F14b-4 AW J..STIN","meatyturtle":"CS2103T-F14b-4 LIM ..O YI","AlphaPyke":"CS2103T-F14b-4 JOSH..MING","fymbc":"CS2103T-F14b-4 TIEW..XUAN","Shantaa":"CS2103T-F14b-4 SHAN.. TAY"}} diff --git a/AY2425S1-CS2103T-T11-2_tp_master/authorship.json b/AY2425S1-CS2103T-T11-2_tp_master/authorship.json index 728fbe43..c9d5cf22 100644 --- a/AY2425S1-CS2103T-T11-2_tp_master/authorship.json +++ b/AY2425S1-CS2103T-T11-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SwaminathanViswa"},"content":"By CS2103T-T11-2","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SwaminathanViswa"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-T11-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SwaminathanViswa"},"content":"* This is **a project for CS2030S TAs**.\u003cbr\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SwaminathanViswa"},"content":" * as a reference to get their students\u0027 details more easily","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":" * as a tool to help them keep track of their students.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"* The project simulates an ongoing software project for a desktop application (called _konTActs_) used for managing contact details.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"* It is named `konTActs` because it is developed for CS2030S TAs to manage their students, store their github details and other contacts like professors and fellow TAs. ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://ay2425s1-cs2103t-t11-2.github.io/tp/)**.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org/#contributing-to-se-edu) for more info.","lastModifiedDate":"2024-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":12,"-":7}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"You can reach us at the email `e1249111[at]u.nus.edu`","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tohjh"},"content":"### Toh Jia Han","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tohjh"},"content":"\u003cimg src\u003d\"images/tohjh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tohjh"},"content":"[[github](http://github.com/tohjh)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tohjh"},"content":"[[portfolio](team/tohjh.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tohjh"},"content":"* Role: Developer","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tohjh"},"content":"* Responsibilities: Deliverables and deadline","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"### Wen Rui","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":"\u003cimg src\u003d\"images/currynia.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":"[[github](http://github.com/currynia)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":"[[portfolio](team/currynia.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DesSnowy"},"content":"* Role: Code quality","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DesSnowy"},"content":"* Responsibilities: Looks after code quality, ensures adherence to coding standards, etc.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DesSnowy"},"content":"### Lau Xiang Yu","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DesSnowy"},"content":"\u003cimg src\u003d\"images/dessnowy.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DesSnowy"},"content":"[[github](http://github.com/DesSnowy)] ","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DesSnowy"},"content":"[[portfolio](team/dessnowy.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DesSnowy"},"content":"* Responsibilities: Integration","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":"### Swaminathan Viswa","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":"\u003cimg src\u003d\"images/swaminathanviswa.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SwaminathanViswa"},"content":"[[github](http://github.com/SwaminathanViswa)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SwaminathanViswa"},"content":"[[portfolio](team/swaminathanviswa.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":"* Responsibilities: Responsible for quality of project documentations","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SwaminathanViswa"},"content":" ### Javier Tan Meng Wee","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Incogdino"},"content":"\u003cimg src\u003d\"images/incogdino.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Incogdino"},"content":"[[github](http://github.com/incogdino)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Incogdino"},"content":"[[portfolio](team/incogdino.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Incogdino"},"content":"* Role: Testing","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Incogdino"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time.","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":6,"DesSnowy":7,"currynia":5,"Incogdino":5,"-":37,"tohjh":7}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DesSnowy"},"content":"# KonTActs Developer Guide","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":"The **_Architecture Diagram_** given above explains the high-level design of the App.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":"- At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":"- At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"currynia"},"content":"- [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":"- [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":"- [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"currynia"},"content":"- [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"currynia"},"content":"The _Sequence Diagram_ below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"currynia"},"content":"- defines its _API_ in an `interface` with the same name as the Component.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"currynia"},"content":"- implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":"- executes user commands using the `Logic` component.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"currynia"},"content":"- listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"currynia"},"content":"- keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":"- depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"currynia"},"content":"- When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"currynia"},"content":"- All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"currynia"},"content":"- stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"currynia"},"content":"- stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"currynia"},"content":"- stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"currynia"},"content":"- does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"currynia"},"content":"- can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"currynia"},"content":"- inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"currynia"},"content":"- depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"currynia"},"content":"- `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"currynia"},"content":"- `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"currynia"},"content":"- `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"currynia"},"content":"- **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"currynia"},"content":" - Pros: Easy to implement.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"currynia"},"content":" - Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"currynia"},"content":"- **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"currynia"},"content":" - Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"currynia"},"content":" - Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"currynia"},"content":"- [Documentation guide](Documentation.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"currynia"},"content":"- [Testing guide](Testing.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"currynia"},"content":"- [Logging guide](Logging.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"currynia"},"content":"- [Configuration guide](Configuration.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"currynia"},"content":"- [DevOps guide](DevOps.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"currynia"},"content":"- has a need to manage a significant number of contacts","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"currynia"},"content":"- prefer desktop apps over other types","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"currynia"},"content":"- can type fast","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"currynia"},"content":"- prefers typing to mouse interactions","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"currynia"},"content":"- is reasonably comfortable using CLI apps","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"**Value proposition**: manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"SwaminathanViswa"},"content":"| Priority | As a/an …​ | I want to …​ | So that …​ |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"DesSnowy"},"content":"|-------|------------------|------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | store student\u0027s github username | I can easily reference them when grading assignments. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | user | add the student\u0027s contact number | I can easily reference them when I need to contact my students. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | add the contact details of other TAs | I can quickly reach out for help or collaboration. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | add contact details of professors | I can easily reach them for guidance or to pass on important information. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | delete contacts easily | I dont clutter the list with unwanted contacts. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | store the grades and progress of my students | I can keep track of which of my students need more guidance and follow up. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | store student\u0027s telegram username | I can easily reference them and contact them when needed to. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | see the student\u0027s MC or reasoning when they do not turn up for lessons | I can create make up lessons / check up on them. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"SwaminathanViswa"},"content":"| `* *` | CS2030S TA | have a function to hide the details of students that I do not need | I can only the the information that I want to see. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"SwaminathanViswa"},"content":"| `* *` | CS2030S TA | view the last modification date of student contact details | I can confirm the accuracy and recency of the information stored. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"SwaminathanViswa"},"content":"| `* *` | CS2030S TA | create contacts with optional fields | I can resepct the privacy of my students. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | search for a student’s GitHub username | I can quickly access their repository for grading and feedback. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | potential user | see the application populated with sample data | I can see how the app looks like when it is in use. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | put the contacts into different tabs | I can easily navigate between different types of contacts. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | use the command line interface to search for contacts | I can integrate the tool smoothly into my existing workflow. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | search for the contact details of professors/ other TAs | I can quickly contact them for help if needed. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | find my students house in time | I can offer them help in times of crisis. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | organise the contact of my students | I can view the details of each student with greater ease. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | import student contact information from a file | I can easily transfer data between devices. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | export student contact information to a file | I can backup or share contact details with other TAs or professors if needed. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | flag specific students for follow-up | I can easily identify students who may need additional support or guidance. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | choose to sort my students | I can group students based on their proficiency. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | filter the contact details that is shown | I can easily find the information of a particular group. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | filter contacts based on a certain criteria | I can access a specific subset of students that I want. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | tag students with custom labels | I can categorize students based on their progress or needs. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | use the command line to access my students work | have their work and contact and tags all tied together in one smooth workflow. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | experienced user | create shortcuts for commands that I use frequently | I can access the frequently used information quickly. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | new user | use a help function to check what this app offers | I can easily have the details of the commands to use in my fingertips. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | create automatic flags to indicate if a student\u0027s work is marked | I can monitor grading deadlines so that I can stay on top of my responsibilities without missing any critical dates. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"currynia"},"content":"(For all use cases below, the **System** is the `KonTActs` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"currynia"},"content":"**Use case: UC01 - Add contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"currynia"},"content":"1. User chooses to add a contact.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for the contact details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"currynia"},"content":"3. User enters the contact details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"currynia"},"content":"4. KonTActs adds the new contact.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects an error in the input format.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"currynia"},"content":" - 3a1.KonTActs requests for the corrected input.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"currynia"},"content":" - 3b2. User enters a new input.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"currynia"},"content":" - Steps 3a1 - 3a2 are repeated until input format is correct.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"currynia"},"content":" Use cases resume from step 4.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"currynia"},"content":"**Use case: UC02 - Delete contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"currynia"},"content":"**Precondition**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"currynia"},"content":"1. The task that the user wants to delete exists.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"currynia"},"content":"1. User indicates to delete a task.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"currynia"},"content":"2. KonTActs deletes the tasks and indicates success.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"currynia"},"content":"- 1a. KonTActs detects an error in the input.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"currynia"},"content":" - 1a1.KonTActs requests for the user to try again.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"currynia"},"content":" - 1a2. User enters the command again","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"currynia"},"content":" - Steps 1a1 - 1a2 are repeated until the input entered is correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"currynia"},"content":" Use case resumes from step 2.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"currynia"},"content":"**Use case: UC03 - Add grades of students**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"currynia"},"content":"**Precondition**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"currynia"},"content":"1. The student that the user wants to add grades exists.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"currynia"},"content":"2. The assignment that the user wants to add a grade to exists.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"currynia"},"content":"1. User chooses to add grades for a student.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for details of the student alongside the assignment and grade.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"currynia"},"content":"3. User enters the requested details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"currynia"},"content":"4. KonTActs updates the grade of the student.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"currynia"},"content":"- 4a. KonTActs detects an error in the entered data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"currynia"},"content":" - 4a1. KonTActs requests for the correct data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"currynia"},"content":" - 4a2. User enters new data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"currynia"},"content":" - Steps 4a1-4a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"currynia"},"content":"**Use case: UC04 - View Contact**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"currynia"},"content":"1. Current UI is not showing the entire contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"currynia"},"content":"2. User chooses to view the entire contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"currynia"},"content":"3. KonTActs displays the full list of contacts.\\","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"currynia"},"content":"- 1a. User has previously filtered the contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"currynia"},"content":" - 1a1. KonTActs displays the full contact list, removing the previous filters.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"currynia"},"content":"- 1b. KonTActs detects an error (e.g., unable to retrieve contacts).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"currynia"},"content":" - 1b1. KonTActs displays an error message.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"currynia"},"content":"**Use case: UC05 - Update contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"currynia"},"content":"1. TA chooses to update a contact’s details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"currynia"},"content":"2. KonTActs requests the contact’s identifier.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"currynia"},"content":"3. TA enters the identifier of the contact to update.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"currynia"},"content":"4. KonTActs displays the current details and requests the changes.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"currynia"},"content":"5. TA updates the relevant details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"currynia"},"content":"6. KonTActs saves and displays the changes.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs identifies that there is no such contact.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs requests for the correct data.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"currynia"},"content":" - 3a2. TA enters the correct data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"currynia"},"content":" - Steps 3a1-3a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"currynia"},"content":"**Use case: UC06 - Filter Contact List**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"currynia"},"content":"1. User chooses to filter the contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"currynia"},"content":"2. KonTActs requests the filter criteria (current overall grades, name, tele handle).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"currynia"},"content":"3. User enters the filter criteria.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"currynia"},"content":"4. KonTActs filters the contact list based on the entered criteria and displays the filtered list.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects an error in the entered filter criteria (e.g., incorrect input - invalid score input).","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs requests for the correct filter criteria.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"currynia"},"content":" - 3a2. Users enter new criteria.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"currynia"},"content":" - Steps 3a1-3a2 are repeated until the criteria entered are valid.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"currynia"},"content":"- \\*a. At any time, User chooses to cancel the filter action.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"currynia"},"content":"- \\*a1. KonTActs stops the filter operation and returns to the unfiltered contact list by using list","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"currynia"},"content":"**Use case: UC07 - Create shortcut for commands**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"currynia"},"content":"1. User indicates to create a shortcut.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"currynia"},"content":"2. KonTActs request for the command that is frequently used.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"currynia"},"content":"3. User enters the command to be shortened.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"currynia"},"content":"4. KonTActs request for the shortcut input to replace the command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"currynia"},"content":"5. User enters the shortcut input.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"currynia"},"content":"6. KonTActs stores the shortcut and indicates success.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects that the command entered is not valid.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs requests for the correct command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"currynia"},"content":" - 3a2. User enters a new command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"currynia"},"content":" - Steps 3a1 - 3a2 are repeated until the command entered is valid.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"currynia"},"content":"- 5a. KonTActs detects that the shortcut is already in use.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"currynia"},"content":" - 5a1. KonTActs request for a new shortcut.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"currynia"},"content":" - 5a2. User enters a new shortcut.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"currynia"},"content":" - Steps 5a1 - 5a2 are repeated until the shortcut entered is valid.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"currynia"},"content":" Use case resumes from step 6.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"currynia"},"content":"- \\*a. At any time, User chooses to cancel the creation of a shortcut.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"currynia"},"content":" - \\*a1. KonTActs stops the creation.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"currynia"},"content":"**Use case: UC08 - Sort students based on proficiency**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"currynia"},"content":"**Precondition**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"currynia"},"content":"1. The address book contains a list of students/ contacts.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"currynia"},"content":"2. Contacts should have a proficiency rating associated to them.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"currynia"},"content":"1. User chooses to sort the students based on their proficiency.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"currynia"},"content":"2. User enters the sort command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"currynia"},"content":"3. KonTActs returns the list of students in the sorted order.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"currynia"},"content":"**Use case: UC09 - Export contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"currynia"},"content":"1. User chooses to export the contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for the format.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"currynia"},"content":"3. User selects the desired format.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"currynia"},"content":"4. KonTActs exports the contact list to the specified format and shows successful import.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":543,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":544,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"currynia"},"content":"- 2a. User selects an unsupported format.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"currynia"},"content":" - 2a1. KonTActs displays an error message and provides the list of formats that are supported.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"currynia"},"content":" Use case resumes from step 3.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"currynia"},"content":"**Use case: UC10 - Request for help**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"currynia"},"content":"1. User inputs help command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"currynia"},"content":"2. KonTActs shows a help page.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"currynia"},"content":"- 1a. User inputs help for a specific command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"currynia"},"content":" - 1a1. KonTActs displays a help page for that command.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"currynia"},"content":"**Use case: UC11 - Tag students with custom labels**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"currynia"},"content":"**Precondition**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"currynia"},"content":"1. The student that the user wants to tag exists.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"currynia"},"content":"1. User chooses to tag a student.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":584,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for details of the student alongside the tag to label the student.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"currynia"},"content":"3. User enters the requested details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"currynia"},"content":"4. KonTActs tags the student with the suggested label.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":588,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects an error in the entered data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs requests for the correct data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"currynia"},"content":" - 3a2. User enters new data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":596,"author":{"gitId":"currynia"},"content":" - Steps 3a1-3a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"currynia"},"content":" Use case resumes from step 3.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":602,"author":{"gitId":"currynia"},"content":"**Use case: UC12 - View last modification date of contact details**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"currynia"},"content":"1. User requests for last modification date of contact.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":607,"author":{"gitId":"currynia"},"content":"2. KonTActs shows the last modification date for that contact.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":610,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"currynia"},"content":"- 1a. User inputs a non-existing contact.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"currynia"},"content":" - 1a1. KonTActs requests for corrected contact details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"currynia"},"content":" - 1a2. User inputs new contact details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"currynia"},"content":" - Steps 1a1 - 1a2 are repeated until the input contact is correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":619,"author":{"gitId":"currynia"},"content":" Use case resumes from step 2.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":620,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":621,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":622,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":623,"author":{"gitId":"currynia"},"content":"**Use case: UC13 - Import contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":624,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":625,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":626,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":627,"author":{"gitId":"currynia"},"content":"1. User chooses to import the contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":628,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for the file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":629,"author":{"gitId":"currynia"},"content":"3. User selects the desired file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":630,"author":{"gitId":"currynia"},"content":"4. KonTActs import the contact list from the specified file and shows successful import.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":631,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":632,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":633,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":634,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":635,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":636,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects an unsupported or corrupted file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":637,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":638,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs indicates it is unable to import from that file and requests for a new file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":639,"author":{"gitId":"currynia"},"content":" - 3a2. User selects a new file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":640,"author":{"gitId":"currynia"},"content":" - Steps 3a1 - 3a2 are repeated until KonTActs is able to import contacts from the file.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":641,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":642,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":643,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":644,"author":{"gitId":"currynia"},"content":"- \\*a. At any time, User chooses to cancel the import.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":645,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":646,"author":{"gitId":"currynia"},"content":" - \\*a1. KonTActs stops the import.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":647,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":648,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":649,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":650,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":651,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":652,"author":{"gitId":"currynia"},"content":"**Use case: UC14 - Create automatic flags for students’ work if marked**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":653,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":654,"author":{"gitId":"currynia"},"content":"Actor: TA","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":655,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":656,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":657,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":658,"author":{"gitId":"currynia"},"content":"1. TA marks a student’s work.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":659,"author":{"gitId":"currynia"},"content":"2. KonTActs creates a flag to show the student’s work as marked.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":660,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":661,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":662,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":663,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":664,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":665,"author":{"gitId":"Incogdino"},"content":"1. Should work on any mainstream OS as long as it has Java 17 or above installed.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":666,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":667,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":668,"author":{"gitId":"Incogdino"},"content":"4. Commands should be easy to remember.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":669,"author":{"gitId":"Incogdino"},"content":"5. Ui should be easy to navigate and intuitive.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":670,"author":{"gitId":"Incogdino"},"content":"6. KonTActs should be easy to use for new users.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":671,"author":{"gitId":"Incogdino"},"content":"7. The system should work on both 32 bit and 64 bit environments.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":672,"author":{"gitId":"Incogdino"},"content":"8. Contact details are securely stored.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":673,"author":{"gitId":"Incogdino"},"content":"9. The application should have an uptime of at least 99.9% to ensure constant availability for users.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":674,"author":{"gitId":"Incogdino"},"content":"10. The application should automatically save data after every change to avoid data loss in case of a crash.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":675,"author":{"gitId":"Incogdino"},"content":"11. There should be proper documentation for the code and application usage to assist developers in future updates.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":676,"author":{"gitId":"Incogdino"},"content":"12. Error messages should be descriptive, providing users with clear guidance on how to resolve the issue.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":677,"author":{"gitId":"Incogdino"},"content":"13. Searching for or filtering contacts should take less than 5 seconds.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":678,"author":{"gitId":"Incogdino"},"content":"14. Stored contacts are persisted between sessions.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":679,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":680,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":681,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":682,"author":{"gitId":"DesSnowy"},"content":"* **Contact**: An individual (e.g. student) stored in the system, typically having details regarding them such as their name, github username and etc.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":683,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":684,"author":{"gitId":"DesSnowy"},"content":"* **Easy to use for new users**: intuitive commands that are easy to understand and UI that is easy to navigate.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":685,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":686,"author":{"gitId":"DesSnowy"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":687,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":688,"author":{"gitId":"DesSnowy"},"content":"* **Average typing speed**: about 40 words per minute.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":689,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":690,"author":{"gitId":"DesSnowy"},"content":"* **Uptime**: The system should be operational during that period of time.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":691,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":692,"author":{"gitId":"DesSnowy"},"content":"* **Between sessions**: Every opening and closing of the application.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":693,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":694,"author":{"gitId":"DesSnowy"},"content":"* **Proper documentation**: A detailed user and developer guide which helps future users and developers to understand and use the code.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":695,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":696,"author":{"gitId":"DesSnowy"},"content":"* **Typical usage**: Normal or expected usage patterns of the application, such as the frequency of adding, deleting, or viewing contacts during everyday use.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":697,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":698,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":699,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":700,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":701,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":702,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":703,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":704,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":705,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":706,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":707,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":708,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":709,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":710,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":711,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":712,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":713,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":714,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":715,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":716,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":717,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":718,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":719,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":720,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":721,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":722,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":723,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":724,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":725,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":726,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":727,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":728,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":729,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":730,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":731,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":732,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":733,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":734,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":735,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":736,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":737,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":738,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":739,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":740,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":741,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":742,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":743,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":744,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":745,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":746,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":747,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":748,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":749,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":750,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":751,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":752,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":753,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-29","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":30,"DesSnowy":10,"currynia":359,"Incogdino":12,"-":337,"tohjh":5}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DesSnowy"},"content":"# KonTActs User Guide","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"konTActs is a **desktop app for managing contacts, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, konTActs can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":1,"DesSnowy":2,"-":203}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DesSnowy"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eKonTActs\u003c/a\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/se-edu/addressbook-level3\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"DesSnowy":1,"-":66}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"KonTActs\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DesSnowy"},"content":"# KonTActs","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"[![Java CI](https://github.com/AY2425S1-CS2103T-T11-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2425S1-CS2103T-T11-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-T11-2/tp/graph/badge.svg)](https://codecov.io/github/AY2425S1-CS2103T-T11-2/tp)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"**KonTActs is a desktop application for managing your students\u0027, fellow TAs\u0027, and professors\u0027 contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":"- If you are interested in using KonTActs, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":"- If you are interested about developing KonTActs, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DesSnowy"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"- Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2024-09-29","isFullCredit":false}],"authorContributionMap":{"DesSnowy":4,"currynia":4,"Incogdino":2,"-":13}},{"path":"docs/team/currynia.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DesSnowy"},"content":" layout: default.md","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Wen Rui\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"- **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":" - What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":" - Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":" - Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":" - Credits: _{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}_","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":"- **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":"- **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"- **Project management**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" - Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":"- **Enhancements to existing features**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" - Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":" - Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"currynia"},"content":"- **Documentation**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":" - User Guide:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"currynia"},"content":" - Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":" - Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" - Developer Guide:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" - Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":"- **Community**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" - PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" - Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"currynia"},"content":" - Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"currynia"},"content":" - Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":"- **Tools**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"currynia"},"content":" - Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"currynia"},"content":" - Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"currynia"},"content":"- _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"DesSnowy":2,"currynia":50}},{"path":"docs/team/dessnowy.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Xiang Yu\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"DesSnowy":1,"-":45}},{"path":"docs/team/incogdino.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Incogdino"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DesSnowy"},"content":" layout: default.md","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Javier\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Incogdino"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Incogdino"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"DesSnowy":2,"Incogdino":9}},{"path":"docs/team/swaminathanviswa.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SwaminathanViswa"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DesSnowy"},"content":" layout: default.md","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Swaminathan Viswa\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SwaminathanViswa"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SwaminathanViswa"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SwaminathanViswa"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SwaminathanViswa"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SwaminathanViswa"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SwaminathanViswa"},"content":"* **Project management**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SwaminathanViswa"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SwaminathanViswa"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SwaminathanViswa"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SwaminathanViswa"},"content":" * User Guide:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SwaminathanViswa"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SwaminathanViswa"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SwaminathanViswa"},"content":"* **Community**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SwaminathanViswa"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":"* **Tools**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SwaminathanViswa"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SwaminathanViswa"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":44,"DesSnowy":2}},{"path":"docs/team/tohjh.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Tohjh\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"DesSnowy":1,"-":45}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DesSnowy"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_NAME \u003d \"The person name provided in invalid\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Incogdino"},"content":" builder.append(\"; Github: \")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Incogdino"},"content":" .append(person.getGithub());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"DesSnowy":1,"Incogdino":2,"-":51}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Incogdino"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Incogdino"},"content":" + PREFIX_GITHUB + \"GITHUB\\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" + PREFIX_TELEGRAM + \"@viswa \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Incogdino"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Incogdino"},"content":" + PREFIX_GITHUB + \"John139\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":2,"Incogdino":5,"-":82}},{"path":"src/main/java/seedu/address/logic/commands/AddGradeCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCORE;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" * Add assignment grades to an existing person in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":"public class AddGradeCommand extends Command {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" public static final String COMMAND_WORD \u003d \"addGrade\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" public static final String MESSAGE_USAGE \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":" COMMAND_WORD","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":" + \": Adds a grade of an assignment to the person. \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"currynia"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":" + PREFIX_NAME","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":" + \"NAME \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"currynia"},"content":" + PREFIX_ASSIGNMENT","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":" + \"ASSIGNMENT \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" + PREFIX_SCORE","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" + \"SCORE \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":" + \"Example: \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":" + COMMAND_WORD","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":" + \" \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" + PREFIX_NAME","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" + \"John Doe \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"currynia"},"content":" + PREFIX_ASSIGNMENT","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"currynia"},"content":" + \"Ex09 \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"currynia"},"content":" + PREFIX_SCORE","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":" + \"9 \";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"currynia"},"content":" private final Name personName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"currynia"},"content":" private final Float score;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"currynia"},"content":" private final String assignmentName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"currynia"},"content":" * @param personName Name of the person.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"currynia"},"content":" * @param score Score of the assignment.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"currynia"},"content":" * @param assignmentName Name of assignment.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"currynia"},"content":" public AddGradeCommand(String personName, Float score, String assignmentName) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"currynia"},"content":" requireAllNonNull(personName, score, assignmentName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"currynia"},"content":" this.personName \u003d new Name(personName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"currynia"},"content":" this.score \u003d score;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"currynia"},"content":" this.assignmentName \u003d assignmentName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tohjh"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"currynia"},"content":" private static Person createGradeToAddToPerson(Person person, String assignmentName, float score) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"currynia"},"content":" assert person !\u003d null;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"currynia"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"currynia"},"content":" Phone phone \u003d person.getPhone();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"currynia"},"content":" Email email \u003d person.getEmail();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"currynia"},"content":" Address address \u003d person.getAddress();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"currynia"},"content":" Set\u003cTag\u003e tags \u003d person.getTags();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"currynia"},"content":" Telegram telegram \u003d person.getTelegram();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"currynia"},"content":" Github github \u003d person.getGithub();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"currynia"},"content":" Assignment assignment \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"currynia"},"content":" new Assignment(assignmentName, score);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"currynia"},"content":" return new Person(name, phone, email, address, telegram, tags, github, assignment);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"currynia"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"currynia"},"content":" // to add error handling","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":" Person person \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"currynia"},"content":" model.getAddressBook().getPersonList().stream()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"currynia"},"content":" .filter(p -\u003e p.getName().equals(personName))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"currynia"},"content":" .toList()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"currynia"},"content":" .get(0);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"currynia"},"content":" model.setPerson(person, createGradeToAddToPerson(person, assignmentName, score));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"currynia"},"content":" return new CommandResult(\"\"); // placeholder string to be added","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"currynia"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"currynia"},"content":" return personName + \" \" + assignmentName + \" \" + score;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"currynia"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"currynia"},"content":" if (other instanceof AddGradeCommand otherCommand) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"currynia"},"content":" return otherCommand.personName.equals(personName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"currynia"},"content":" \u0026\u0026 Objects.equals(otherCommand.assignmentName, assignmentName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"currynia"},"content":" \u0026\u0026 Objects.equals(otherCommand.score, score);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"currynia"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"currynia":106,"tohjh":3}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DesSnowy"},"content":" private final Name targetName;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DesSnowy"},"content":" public DeleteCommand(Name targetName) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DesSnowy"},"content":" this.targetName \u003d targetName;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DesSnowy"},"content":" Person personToDelete \u003d lastShownList","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DesSnowy"},"content":" .stream()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DesSnowy"},"content":" .filter(person -\u003e person.getName().equals(targetName))","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DesSnowy"},"content":" .findFirst()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DesSnowy"},"content":" .orElseThrow(() -\u003e new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DesSnowy"},"content":" return targetName.equals(otherDeleteCommand.targetName);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DesSnowy"},"content":" .add(\"targetName\", targetName)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"DesSnowy":11,"-":58}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tohjh"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Incogdino"},"content":" + \"[\" + PREFIX_TAG + \"TAG] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Incogdino"},"content":" + \"[\" + PREFIX_GITHUB + \"GitHub] \\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Incogdino"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Incogdino"},"content":" + PREFIX_GITHUB + \"john123\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"currynia"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"currynia"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"currynia"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"currynia"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"currynia"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"currynia"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"currynia"},"content":" Telegram updatedTelegram \u003d editPersonDescriptor.getTelegram().orElse(personToEdit.getTelegram());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"currynia"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"currynia"},"content":" Github updatedGithub \u003d editPersonDescriptor.getGithub().orElse(personToEdit.getGithub());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"currynia"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"currynia"},"content":" updatedTelegram, updatedTags, updatedGithub);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"currynia"},"content":" if (!(other instanceof EditCommand otherEditCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SwaminathanViswa"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"tohjh"},"content":" private Assignment assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Incogdino"},"content":" private Github github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"currynia"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"SwaminathanViswa"},"content":" setTelegram(toCopy.telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"tohjh"},"content":" setAssignment(toCopy.assignment);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Incogdino"},"content":" setGithub(toCopy.github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"SwaminathanViswa"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, telegram, tags, github);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"SwaminathanViswa"},"content":" public Optional\u003cTelegram\u003e getTelegram() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"SwaminathanViswa"},"content":" return Optional.ofNullable(telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"currynia"},"content":" public void setTelegram(Telegram telegram) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"currynia"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"currynia"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"currynia"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"currynia"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"currynia"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"Incogdino"},"content":" public Optional\u003cGithub\u003e getGithub() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Incogdino"},"content":" return Optional.ofNullable(github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"currynia"},"content":" public void setGithub(Github username) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"currynia"},"content":" this.github \u003d username;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"currynia"},"content":" if (!(other instanceof EditPersonDescriptor otherEditPersonDescriptor)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"SwaminathanViswa"},"content":" \u0026\u0026 Objects.equals(telegram, otherEditPersonDescriptor.telegram)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"Incogdino"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"Incogdino"},"content":" \u0026\u0026 Objects.equals(github, otherEditPersonDescriptor.github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"SwaminathanViswa"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"Incogdino"},"content":" .add(\"github\", github)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"tohjh"},"content":" public Optional\u003cAssignment\u003e getAssignment() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"tohjh"},"content":" return Optional.ofNullable(assignment);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"tohjh"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"currynia"},"content":" public void setAssignment(Assignment assignment) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"currynia"},"content":" this.assignment \u003d assignment;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":8,"currynia":41,"Incogdino":18,"-":213,"tohjh":6}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_TELEGRAM, PREFIX_TAG, PREFIX_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_EMAIL, PREFIX_TELEGRAM, PREFIX_GITHUB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SwaminathanViswa"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_TELEGRAM, PREFIX_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram telegram \u003d ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Incogdino"},"content":" Github github \u003d ParserUtil.parseGithub(argMultimap.getValue(PREFIX_GITHUB).get());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SwaminathanViswa"},"content":" Person person \u003d new Person(name, phone, email, address, telegram, tagList, github);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":11,"Incogdino":3,"-":57}},{"path":"src/main/java/seedu/address/logic/parser/AddGradeCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCORE;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":" * Parses input arguments and creates a new AddGradeCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"public class AddGradeCommandParser implements Parser\u003cAddGradeCommand\u003e {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":" public AddGradeCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_ASSIGNMENT, PREFIX_SCORE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":" String name \u003d argMultimap.getValue(PREFIX_NAME).get();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":" Float score \u003d ParserUtil.parseScore(argMultimap.getValue(PREFIX_SCORE).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":" String assignmentName \u003d ParserUtil.parseAssignmentName(argMultimap.getValue(PREFIX_ASSIGNMENT).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":" return new AddGradeCommand(name, score, assignmentName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"currynia":26}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"currynia"},"content":" case AddGradeCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":" return new AddGradeCommandParser().parse(arguments);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"currynia":4,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":" public static final Prefix PREFIX_ASSIGNMENT \u003d new Prefix(\"asgn/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":" public static final Prefix PREFIX_SCORE \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":" public static final Prefix PREFIX_TELEGRAM \u003d new Prefix(\"telegram/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Incogdino"},"content":" public static final Prefix PREFIX_GITHUB \u003d new Prefix(\"github/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":1,"currynia":2,"Incogdino":1,"-":14}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DesSnowy"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DesSnowy"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DesSnowy"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DesSnowy"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DesSnowy"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DesSnowy"},"content":" return new DeleteCommand(name);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DesSnowy"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DesSnowy"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DesSnowy"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DesSnowy"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DesSnowy"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DesSnowy"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"DesSnowy":19,"-":23}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_ADDRESS, PREFIX_TELEGRAM, PREFIX_TAG, PREFIX_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SwaminathanViswa"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_ADDRESS, PREFIX_TELEGRAM, PREFIX_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SwaminathanViswa"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM).isPresent()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SwaminathanViswa"},"content":" editPersonDescriptor.setTelegram(ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Incogdino"},"content":" if (argMultimap.getValue(PREFIX_GITHUB).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Incogdino"},"content":" editPersonDescriptor.setGithub(ParserUtil.parseGithub(argMultimap.getValue(PREFIX_GITHUB).get()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":8,"Incogdino":4,"-":82}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" * whitespaces will be trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" * Parses a {@code String name} into a {@code Name}. Leading and trailing whitespaces will be","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" * trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SwaminathanViswa"},"content":" * Parses a {@code String telegram} into an {@code Telegram}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SwaminathanViswa"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SwaminathanViswa"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SwaminathanViswa"},"content":" * @throws ParseException if the given {@code telegram} is invalid.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SwaminathanViswa"},"content":" public static Telegram parseTelegram(String address) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SwaminathanViswa"},"content":" requireNonNull(address);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SwaminathanViswa"},"content":" String trimmedTelegram \u003d address.trim();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SwaminathanViswa"},"content":" if (!Telegram.isValidTelegram(trimmedTelegram)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SwaminathanViswa"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SwaminathanViswa"},"content":" return new Telegram(trimmedTelegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"currynia"},"content":" * Parses String assignment without trailing spaces.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"currynia"},"content":" public static String parseAssignmentName(String assignment) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"currynia"},"content":" requireNonNull(assignment);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"currynia"},"content":" return assignment.trim();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"currynia"},"content":" * Parses String into float.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"currynia"},"content":" public static Float parseScore(String score) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"currynia"},"content":" requireNonNull(score);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"currynia"},"content":" return Float.parseFloat(score.trim());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Incogdino"},"content":" * Parses a GitHub {@code String username} into an {@code Github}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Incogdino"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Incogdino"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Incogdino"},"content":" * @throws ParseException if the given {@code username} is invalid.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Incogdino"},"content":" public static Github parseGithub(String username) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"Incogdino"},"content":" requireNonNull(username);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Incogdino"},"content":" String trimmedUsername \u003d username.trim();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Incogdino"},"content":" if (!Github.isValidGithubUsername(trimmedUsername)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Incogdino"},"content":" throw new ParseException(Github.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Incogdino"},"content":" return new Github(trimmedUsername);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":16,"currynia":23,"Incogdino":15,"-":120}},{"path":"src/main/java/seedu/address/model/assignment/Assignment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.model.assignment;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":" * Represents an Assignment in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"public class Assignment {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":" public final String assignmentName;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":" public final float score;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":" * Constructs a {@code Assignment}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":" * @param assignmentName A valid assignment name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":" * @param score A score for the assignment.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":" public Assignment(String assignmentName, float score) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":" this.assignmentName \u003d assignmentName;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":" this.score \u003d score;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":" return \"Assignment:\" + assignmentName + \" \" + score;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" public float getScore() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":" return score;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":" public String getAssignmentName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":" return assignmentName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"currynia":34}},{"path":"src/main/java/seedu/address/model/person/Github.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Incogdino"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Incogdino"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Incogdino"},"content":" * Represents a Person\u0027s github account in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidGithubUsername(String)}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Incogdino"},"content":"public class Github {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Incogdino"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Incogdino"},"content":" \"Github usernames should only contain - and alphanumeric characters\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Incogdino"},"content":" public static final String VALIDATION_REGEX \u003d \"^[a-zA-Z0-9-]+$\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Incogdino"},"content":" public final String username;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Incogdino"},"content":" * Constructs an {@code Github}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Incogdino"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Incogdino"},"content":" * @param githubUsername A valid GitHub username.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Incogdino"},"content":" public Github(String githubUsername) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Incogdino"},"content":" requireNonNull(githubUsername);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Incogdino"},"content":" checkArgument(isValidGithubUsername(githubUsername), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Incogdino"},"content":" username \u003d githubUsername;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Incogdino"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Incogdino"},"content":" public static boolean isValidGithubUsername(String test) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Incogdino"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Incogdino"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Incogdino"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Incogdino"},"content":" return this.username;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Incogdino"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Incogdino"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Incogdino"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Incogdino"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Incogdino"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Incogdino"},"content":" if (!(other instanceof Github)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Incogdino"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Incogdino"},"content":" Github otherGithub \u003d (Github) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Incogdino"},"content":" return username.equals(otherGithub.username);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Incogdino"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Incogdino"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Incogdino"},"content":" return username.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Incogdino"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"Incogdino":59}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Incogdino"},"content":" private final Github github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SwaminathanViswa"},"content":" private final Telegram telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":" private Assignment assignment;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":" public Person(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" Name name,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" Phone phone,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":" Email email,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":" Address address,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":" Telegram telegram,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" Set\u003cTag\u003e tags,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" Github github) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Incogdino"},"content":" this.github \u003d github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"currynia"},"content":" * Contains an additional assignment field.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"currynia"},"content":" public Person(","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"currynia"},"content":" Name name,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"currynia"},"content":" Phone phone,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"currynia"},"content":" Email email,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"currynia"},"content":" Address address,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"currynia"},"content":" Telegram telegram,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"currynia"},"content":" Set\u003cTag\u003e tags,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"currynia"},"content":" Github github,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"currynia"},"content":" Assignment assignment) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"currynia"},"content":" requireAllNonNull(name, phone, email, address, telegram, tags, github);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"currynia"},"content":" this.github \u003d github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"currynia"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"currynia"},"content":" this.assignment \u003d assignment;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SwaminathanViswa"},"content":" public Telegram getTelegram() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SwaminathanViswa"},"content":" return telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"currynia"},"content":" public Assignment getAssignment() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"currynia"},"content":" return assignment;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"currynia"},"content":" public void setAssignment(Assignment assignment) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"currynia"},"content":" this.assignment \u003d assignment;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Incogdino"},"content":" public Github getGithub() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Incogdino"},"content":" return github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"currynia"},"content":" return otherPerson !\u003d null \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"currynia"},"content":" * Returns true if both persons have the same identity and data fields. This defines a stronger","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"currynia"},"content":" * notion of equality between two persons.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"currynia"},"content":" if (!(other instanceof Person otherPerson)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"currynia"},"content":" return","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"currynia"},"content":" name.equals(otherPerson.name)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SwaminathanViswa"},"content":" \u0026\u0026 telegram.equals(otherPerson.telegram)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Incogdino"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Incogdino"},"content":" \u0026\u0026 github.equals(otherPerson.github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"SwaminathanViswa"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Incogdino"},"content":" .add(\"github\", github)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"currynia"},"content":" .add(\"assignment\", assignment)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":9,"currynia":44,"Incogdino":8,"-":114}},{"path":"src/main/java/seedu/address/model/person/Telegram.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SwaminathanViswa"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SwaminathanViswa"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SwaminathanViswa"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SwaminathanViswa"},"content":" * Represents a Person\u0027s telegram in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SwaminathanViswa"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegram(String)}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"public class Telegram {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Telegram can take any values, and it should not be blank\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"content":" /*","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SwaminathanViswa"},"content":" public final String value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SwaminathanViswa"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":" * @param telegram A valid telegram.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SwaminathanViswa"},"content":" public Telegram(String telegram) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SwaminathanViswa"},"content":" checkArgument(isValidTelegram(telegram), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SwaminathanViswa"},"content":" value \u003d telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" * Returns true if a given string is a valid telegram.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SwaminathanViswa"},"content":" public static boolean isValidTelegram(String test) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":" return value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SwaminathanViswa"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SwaminathanViswa"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SwaminathanViswa"},"content":" if (!(other instanceof Telegram)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SwaminathanViswa"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram otherTelegram \u003d (Telegram) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SwaminathanViswa"},"content":" return value.equals(otherTelegram.value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SwaminathanViswa"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SwaminathanViswa"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SwaminathanViswa"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SwaminathanViswa"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":65}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"friends\"), new Github(\"Alex\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"colleagues\", \"friends\"), new Github(\"Bernice\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"neighbours\"), new Github(\"Charlotte\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"family\"), new Github(\"david\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"classmates\"), new Github(\"Irfan\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"colleagues\"), new Github(\"Roy\"))","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":7,"Incogdino":7,"-":48}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tohjh"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" private final String telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Incogdino"},"content":" private final String github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" private final String assignmentName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" private final Float assignmentScore;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":" @JsonProperty(\"telegram\") String telegram, @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tohjh"},"content":" @JsonProperty(\"github\") String github, @JsonProperty(\"assignment\") String assignment,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tohjh"},"content":" @JsonProperty(\"assignmentScore\") Float assignmentScore) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tohjh"},"content":" this.assignmentName \u003d assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"tohjh"},"content":" this.assignmentScore \u003d assignmentScore;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Incogdino"},"content":" this.github \u003d github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SwaminathanViswa"},"content":" telegram \u003d source.getTelegram().value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Incogdino"},"content":" github \u003d source.getGithub().username;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"tohjh"},"content":" Assignment assignment \u003d source.getAssignment();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"tohjh"},"content":" assignmentName \u003d assignment !\u003d null ? assignment.assignmentName : null; // Get assignment name","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"tohjh"},"content":" assignmentScore \u003d assignment !\u003d null ? assignment.score : null;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SwaminathanViswa"},"content":" if (telegram \u003d\u003d null) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SwaminathanViswa"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram.class.getSimpleName()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SwaminathanViswa"},"content":" if (!Telegram.isValidTelegram(telegram)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SwaminathanViswa"},"content":" throw new IllegalValueException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SwaminathanViswa"},"content":" final Telegram modelTelegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Incogdino"},"content":" if (github \u003d\u003d null) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Incogdino"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Github.class.getSimpleName()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Incogdino"},"content":" if (!Github.isValidGithubUsername(github)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Incogdino"},"content":" throw new IllegalValueException(Github.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Incogdino"},"content":" final Github modelGithub \u003d new Github(github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"tohjh"},"content":" Assignment modelAssignment \u003d null;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"tohjh"},"content":" if (assignmentName !\u003d null \u0026\u0026 assignmentScore !\u003d null) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"tohjh"},"content":" modelAssignment \u003d new Assignment(assignmentName, assignmentScore); // Create Assignment object","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"tohjh"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"currynia"},"content":" return new Person(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"currynia"},"content":" modelName, modelPhone, modelEmail,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"currynia"},"content":" modelAddress, modelTelegram, modelTags, modelGithub, modelAssignment);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":15,"currynia":5,"Incogdino":12,"-":107,"tohjh":12}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tohjh"},"content":" private Label assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Incogdino"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Incogdino"},"content":" private Label github;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"tohjh"},"content":" if (person.getAssignment() !\u003d null) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tohjh"},"content":" assignment.setText(person.getAssignment().toString());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tohjh"},"content":" } else {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"tohjh"},"content":" assignment.setText(\"No assignment available\"); // Optional: for better user feedback","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"tohjh"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Incogdino"},"content":" if (person.getGithub() !\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Incogdino"},"content":" github.setText(person.getGithub().toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Incogdino"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Incogdino"},"content":" github.setText(\"GitHub username unspecified\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Incogdino":7,"-":60,"tohjh":6}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tohjh"},"content":" \u003cLabel fx:id\u003d\"assignment\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$assignment\" /\u003e","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Incogdino"},"content":" \u003cLabel fx:id\u003d\"github\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$Github\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"Incogdino":1,"-":36,"tohjh":2}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DesSnowy"},"content":" String deleteCommand \u003d \"delete\" + NAME_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DesSnowy"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"SwaminathanViswa"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + TELEGRAM_DESC_AMY + GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":3,"DesSnowy":3,"Incogdino":1,"-":171}},{"path":"src/test/java/seedu/address/logic/commands/AddGradeCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":"public class AddGradeCommandTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":" public void constructor_nullAssignmentFormat_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddGradeCommand(null, 0f, null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" public void constructor_validAddGradeCommandFormat_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":" AddGradeCommand command \u003d new AddGradeCommand(\"John Doe\", 9.0f, \"Ex09\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" assertNotNull(command);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"currynia"},"content":" public void execute_validPersonGrade_success() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":" Person testPerson \u003d TypicalPersons.ALICE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":" AddGradeCommand command \u003d new AddGradeCommand(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"currynia"},"content":" testPerson.getName().toString(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":" 9.0f,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" \"Ex09\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" command.execute(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":" assertEquals(model","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":" .getAddressBook()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":" .getPersonList()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" .stream().filter(person -\u003e person","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" .getName()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"currynia"},"content":" .equals(testPerson.getName())).toList().get(0).getAssignment().getScore(), 9.0f);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"currynia":47}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String VALID_TELEGRAM_AMY \u003d \"@amy\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String VALID_TELEGRAM_BOB \u003d \"@bob\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Incogdino"},"content":" public static final String VALID_GITHUB_BOB \u003d \"Bob\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Incogdino"},"content":" public static final String VALID_GITHUB_AMY \u003d \"Amy\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":" public static final String VALID_ASSIGNMENT_ONE \u003d \"Ex01\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":" public static final Float VALID_SCORE \u003d 10f;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String TELEGRAM_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String TELEGRAM_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"currynia"},"content":" public static final String ASSIGNMENT_DESC_ONE \u003d \" \" + PREFIX_ASSIGNMENT + VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"currynia"},"content":" public static final String SCORE_DESC \u003d \" \" + PREFIX_SCORE + VALID_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Incogdino"},"content":" public static final String GITHUB_DESC_AMY \u003d \" \" + PREFIX_GITHUB + VALID_GITHUB_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Incogdino"},"content":" public static final String GITHUB_DESC_BOB \u003d \" \" + PREFIX_GITHUB + VALID_GITHUB_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DesSnowy"},"content":" public static final String VALID_NAME_MISSING \u003d \"Gonathan Lee\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":7,"DesSnowy":2,"currynia":7,"Incogdino":5,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_MISSING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DesSnowy"},"content":" public void execute_validNameUnfilteredList_success() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DesSnowy"},"content":" public void execute_missingNameUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DesSnowy"},"content":" Person missingPerson \u003d new PersonBuilder().withName(VALID_NAME_MISSING).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(missingPerson.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DesSnowy"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DesSnowy"},"content":" public void execute_validNameFilteredList_success() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DesSnowy"},"content":" public void execute_missingNameFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DesSnowy"},"content":" Person hiddenPerson \u003d model.getFilteredPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DesSnowy"},"content":" // ensures that notShownName is still in address book list","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DesSnowy"},"content":" assertTrue(model.hasPerson(hiddenPerson));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(hiddenPerson.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"DesSnowy"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"DesSnowy"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"DesSnowy"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(alice.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(bob.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(alice.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"DesSnowy"},"content":" Name targetName \u003d new PersonBuilder().withName(\"Alice\").build().getName();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetName);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"DesSnowy"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetName\u003d\" + targetName + \"}\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"DesSnowy":26,"-":99}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"currynia"},"content":" public void assignment_null_handled() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"currynia"},"content":" Assignment testAssignment \u003d new Assignment(VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"currynia"},"content":" assertEquals(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"currynia"},"content":" new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"currynia"},"content":" .withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"currynia"},"content":" .build().getAssignment()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"currynia"},"content":" .orElse(testAssignment),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"currynia"},"content":" testAssignment);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"currynia"},"content":" assertEquals(standardCommand, commandWithSameValues);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"currynia"},"content":" assertEquals(standardCommand, standardCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"currynia"},"content":" assertNotEquals(null, standardCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"currynia"},"content":" assertNotEquals(standardCommand, new ClearCommand());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"currynia"},"content":" assertNotEquals(standardCommand, new EditCommand(INDEX_SECOND_PERSON, DESC_AMY));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"currynia"},"content":" assertNotEquals(standardCommand, new EditCommand(INDEX_FIRST_PERSON, DESC_BOB));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"currynia":23,"-":176}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SwaminathanViswa"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", telegram\u003d\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SwaminathanViswa"},"content":" + editPersonDescriptor.getTelegram().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Incogdino"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", github\u003d\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Incogdino"},"content":" + editPersonDescriptor.getGithub().orElse(null) + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":2,"Incogdino":2,"-":69}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB + TAG_DESC_FRIEND + GITHUB_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SwaminathanViswa"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SwaminathanViswa"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB + TAG_DESC_FRIEND + GITHUB_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SwaminathanViswa"},"content":" // multiple telegram IDs","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, TELEGRAM_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SwaminathanViswa"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SwaminathanViswa"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_AMY + TELEGRAM_DESC_AMY","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Incogdino"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_GITHUB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_EMAIL, PREFIX_PHONE, PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_AMY + TELEGRAM_DESC_AMY + GITHUB_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"SwaminathanViswa"},"content":" + VALID_ADDRESS_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"SwaminathanViswa"},"content":" + VALID_ADDRESS_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"SwaminathanViswa"},"content":" + TAG_DESC_FRIEND + GITHUB_DESC_BOB, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND + GITHUB_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + GITHUB_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":36,"Incogdino":4,"-":176}},{"path":"src/test/java/seedu/address/logic/parser/AddGradeCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ASSIGNMENT_DESC_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SCORE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":"public class AddGradeCommandParserTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":" private final AddGradeCommandParser parser \u003d new AddGradeCommandParser();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":" public void parse_allFieldsSpecified_success() throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":" String userInput \u003d NAME_DESC_AMY + ASSIGNMENT_DESC_ONE + SCORE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":" AddGradeCommand expectedCommand \u003d new AddGradeCommand(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":" VALID_NAME_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" VALID_SCORE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" VALID_ASSIGNMENT_ONE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"currynia":29}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ASSIGNMENT_DESC_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SCORE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand.COMMAND_WORD + NAME_DESC_AMY);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DesSnowy"},"content":" assertEquals(new DeleteCommand(new Name(VALID_NAME_AMY)), command);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"currynia"},"content":" public void parseCommand_addGrade() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"currynia"},"content":" String arguments \u003d NAME_DESC_AMY + ASSIGNMENT_DESC_ONE + SCORE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"currynia"},"content":" AddGradeCommand command \u003d (AddGradeCommand) parser.parseCommand(AddGradeCommand.COMMAND_WORD + arguments);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"currynia"},"content":" assertEquals(command, new AddGradeCommand(VALID_NAME_AMY, VALID_SCORE, VALID_ASSIGNMENT_ONE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"DesSnowy":6,"currynia":11,"-":99}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DesSnowy"},"content":" assertParseSuccess(parser, NAME_DESC_AMY, new DeleteCommand(new Name(VALID_NAME_AMY)));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DesSnowy"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DesSnowy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DesSnowy"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DesSnowy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"DesSnowy":10,"-":29}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SwaminathanViswa"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + TELEGRAM_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SwaminathanViswa"},"content":" + TAG_DESC_FRIEND + GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SwaminathanViswa"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(VALID_GITHUB_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":7,"Incogdino":2,"-":206}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SwaminathanViswa"},"content":" private static final String INVALID_TELEGRAM \u003d \" \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Incogdino"},"content":" private static final String INVALID_GITHUB \u003d \"James123-;?\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" private static final String VALID_TELEGRAM \u003d \"@viswa\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Incogdino"},"content":" private static final String VALID_GITHUB \u003d \"Amy-123\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"currynia"},"content":" public void parseAssignment_removeTrailingSpaces() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"currynia"},"content":" String testString \u003d \"Ex01 \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"currynia"},"content":" String expectedString \u003d testString.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"currynia"},"content":" assertEquals(ParserUtil.parseAssignmentName(testString), expectedString);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"currynia"},"content":" public void parseScore_parsesCorrectScore() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"currynia"},"content":" String testString \u003d \"10.00\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"currynia"},"content":" Float expected \u003d 10f;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"currynia"},"content":" assertEquals(ParserUtil.parseScore(testString), expected);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"SwaminathanViswa"},"content":" public void parseTelegram_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTelegram((String) null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"SwaminathanViswa"},"content":" public void parseTelegram_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTelegram(INVALID_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"SwaminathanViswa"},"content":" public void parseTelegram_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"SwaminathanViswa"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(VALID_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"SwaminathanViswa"},"content":" public void parseTelegram_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"SwaminathanViswa"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_TELEGRAM + WHITESPACE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"SwaminathanViswa"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(addressWithWhitespace));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Incogdino"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"Incogdino"},"content":" public void parseGithub_withInvalidUsername_throwsParseException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Incogdino"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseGithub(INVALID_GITHUB));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":25,"currynia":15,"Incogdino":6,"-":196}},{"path":"src/test/java/seedu/address/model/assignment/AssignmentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.model.assignment;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"public class AssignmentTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":" private final Assignment assignment \u003d new Assignment(VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":" String expected \u003d \"Assignment:\" + VALID_ASSIGNMENT_ONE + \" \" + VALID_SCORE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":" assertEquals(expected, assignment.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"currynia":17}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" .withAddress(VALID_ADDRESS_BOB).withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"currynia"},"content":" assertEquals(ALICE, aliceCopy);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"currynia"},"content":" assertEquals(ALICE, ALICE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"currynia"},"content":" assertNotEquals(null, ALICE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"currynia"},"content":" assertNotEquals(5, ALICE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, BOB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SwaminathanViswa"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SwaminathanViswa"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Incogdino"},"content":" // different GitHub account -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Incogdino"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withGithub(VALID_GITHUB_BOB).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SwaminathanViswa"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SwaminathanViswa"},"content":" + \", telegram\u003d\" + ALICE.getTelegram() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"currynia"},"content":" + \", github\u003d\" + ALICE.getGithub()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"currynia"},"content":" + \", assignment\u003d\" + ALICE.getAssignment() + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":7,"currynia":15,"Incogdino":4,"-":88}},{"path":"src/test/java/seedu/address/model/person/TelegramTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SwaminathanViswa"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SwaminathanViswa"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SwaminathanViswa"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SwaminathanViswa"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":"public class TelegramTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SwaminathanViswa"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(NullPointerException.class, () -\u003e new Telegram(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":" public void constructor_invalidTelegram_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":" String invalidTelegram \u003d \"\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Telegram(invalidTelegram));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":" public void isValidTelegram() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SwaminathanViswa"},"content":" // null address","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(NullPointerException.class, () -\u003e Telegram.isValidTelegram(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SwaminathanViswa"},"content":" // invalid addresses","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(Telegram.isValidTelegram(\"\")); // empty string","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(Telegram.isValidTelegram(\" \")); // spaces only","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" // valid addresses","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(Telegram.isValidTelegram(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(Telegram.isValidTelegram(\"-\")); // one character","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(Telegram.isValidTelegram(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" public void equals() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram telegram \u003d new Telegram(\"Valid Telegram\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(telegram.equals(new Telegram(\"Valid Telegram\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SwaminathanViswa"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(telegram.equals(telegram));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SwaminathanViswa"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(telegram.equals(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SwaminathanViswa"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(telegram.equals(5.0f));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SwaminathanViswa"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(telegram.equals(new Telegram(\"Other Valid Telegram\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SwaminathanViswa"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":56}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" private static final String INVALID_TELEGRAM \u003d \" \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Incogdino"},"content":" private static final String INVALID_GITHUB \u003d \"James123-;?\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" private static final String VALID_TELEGRAM \u003d BENSON.getTelegram().toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Incogdino"},"content":" private static final String VALID_GITHUB \u003d BENSON.getGithub().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":" Person defaultPerson \u003d new PersonBuilder().buildWithAssignment();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"currynia"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(defaultPerson);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"currynia"},"content":" assertEquals(defaultPerson, person.toModelType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"currynia"},"content":" public void toModelType_nullGithub_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"currynia"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, null, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"currynia"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Github.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"currynia"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"currynia"},"content":" INVALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"currynia"},"content":" null, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TELEGRAM,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"currynia"},"content":" invalidTags, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"SwaminathanViswa"},"content":" public void toModelType_invalidTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, INVALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"SwaminathanViswa"},"content":" String expectedMessage \u003d Telegram.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Incogdino"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Incogdino"},"content":" public void toModelType_invalidGithubUsername_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Incogdino"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"currynia"},"content":" INVALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Incogdino"},"content":" String expectedMessage \u003d Github.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Incogdino"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":21,"currynia":26,"Incogdino":10,"-":99}},{"path":"src/test/java/seedu/address/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.IDA;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"currynia"},"content":" System.out.println(original);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" original.addPerson(HOON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" original.removePerson(ALICE);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" original.addPerson(IDA);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"currynia":1,"-":109}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" descriptor.setTelegram(person.getTelegram());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Incogdino"},"content":" descriptor.setGithub(person.getGithub());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SwaminathanViswa"},"content":" * Sets the {@code Telegram} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SwaminathanViswa"},"content":" public EditPersonDescriptorBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SwaminathanViswa"},"content":" descriptor.setTelegram(new Telegram(telegram));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SwaminathanViswa"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Incogdino"},"content":" * Sets the {@code GitHub} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Incogdino"},"content":" public EditPersonDescriptorBuilder withGithub(String username) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Incogdino"},"content":" descriptor.setGithub(new Github(username));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Incogdino"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":10,"Incogdino":10,"-":87}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"@viswa\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Incogdino"},"content":" public static final String DEFAULT_GITHUB \u003d \"Amy\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" public static final String DEFAULT_ASSIGNMENT_NAME \u003d \"Ex01\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" public static final Float DEFAULT_ASSIGNMENT_SCORE \u003d 0f;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SwaminathanViswa"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Incogdino"},"content":" private Github github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" private Assignment assignment;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":" telegram \u003d new Telegram(DEFAULT_TELEGRAM);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Incogdino"},"content":" github \u003d new Github(DEFAULT_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"currynia"},"content":" assignment \u003d new Assignment(DEFAULT_ASSIGNMENT_NAME, DEFAULT_ASSIGNMENT_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SwaminathanViswa"},"content":" telegram \u003d personToCopy.getTelegram();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Incogdino"},"content":" github \u003d personToCopy.getGithub();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"currynia"},"content":" assignment \u003d personToCopy.getAssignment();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SwaminathanViswa"},"content":" * Sets the {@code Telegram} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SwaminathanViswa"},"content":" public PersonBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SwaminathanViswa"},"content":" this.telegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SwaminathanViswa"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Incogdino"},"content":" * Sets the {@code GitHub} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Incogdino"},"content":" public PersonBuilder withGithub(String username) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Incogdino"},"content":" this.github \u003d new Github(username);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Incogdino"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"currynia"},"content":" * Sets the {@code Assignment} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"currynia"},"content":" public PersonBuilder witAssignment(String assignment, Float score) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"currynia"},"content":" this.assignment \u003d new Assignment(assignment, score);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"currynia"},"content":" return this;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SwaminathanViswa"},"content":" return new Person(name, phone, email, address, telegram, tags, github);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"currynia"},"content":" public Person buildWithAssignment() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"currynia"},"content":" return new Person(name, phone, email, address, telegram, tags, github, assignment);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":12,"currynia":18,"Incogdino":13,"-":97}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" sb.append(PREFIX_TELEGRAM + person.getTelegram().value + \" \");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Incogdino"},"content":" sb.append(PREFIX_GITHUB + person.getGithub().username + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SwaminathanViswa"},"content":" descriptor.getTelegram().ifPresent(telegram -\u003e sb.append(PREFIX_TELEGRAM).append(telegram.value).append(\" \"));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Incogdino"},"content":" sb.append(PREFIX_TAG).append(\" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Incogdino"},"content":" descriptor.getGithub().ifPresent(github -\u003e sb.append(PREFIX_GITHUB).append(github.username).append(\" \"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":4,"Incogdino":5,"-":61}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Alice\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Incogdino"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Incogdino"},"content":" .withGithub(\"Alice\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Benson\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Incogdino"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Incogdino"},"content":" .withGithub(\"Benson\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Carl\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Carl\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"cornelia@example.com\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":" .withAddress(\"10th street\").withTelegram(\"@Daniel\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SwaminathanViswa"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Incogdino"},"content":" .withGithub(\"Daniel\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Elle\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Elle\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Fiona\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Fiona\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@George\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"George\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Hoon\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Hoon\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Ida\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Ida\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SwaminathanViswa"},"content":" .withTags(VALID_TAG_FRIEND).withGithub(VALID_GITHUB_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SwaminathanViswa"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withGithub(VALID_GITHUB_BOB).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":" private TypicalPersons() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"currynia"},"content":" } // prevents instantiation","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":30,"currynia":3,"Incogdino":7,"-":62}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SwaminathanViswa"},"content":"By CS2103T-T11-2","lastModifiedDate":"2024-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SwaminathanViswa"},"content":"[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-T11-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SwaminathanViswa"},"content":"* This is **a project for CS2030S TAs**.\u003cbr\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SwaminathanViswa"},"content":" * as a reference to get their students\u0027 details more easily","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":" * as a tool to help them keep track of their students.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"* The project simulates an ongoing software project for a desktop application (called _konTActs_) used for managing contact details.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * It comes with a **reasonable level of user and developer documentation**.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"* It is named `konTActs` because it is developed for CS2030S TAs to manage their students, store their github details and other contacts like professors and fellow TAs. ","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"content":"* For the detailed documentation of this project, see the **[Address Book Product Website](https://ay2425s1-cs2103t-t11-2.github.io/tp/)**.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"* This project is a **part of the se-education.org** initiative. If you would like to contribute code to this project, see [se-education.org](https://se-education.org/#contributing-to-se-edu) for more info.","lastModifiedDate":"2024-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":12,"-":7}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"You can reach us at the email `e1249111[at]u.nus.edu`","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"tohjh"},"content":"### Toh Jia Han","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"tohjh"},"content":"\u003cimg src\u003d\"images/tohjh.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"tohjh"},"content":"[[github](http://github.com/tohjh)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"tohjh"},"content":"[[portfolio](team/tohjh.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"tohjh"},"content":"* Role: Developer","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"tohjh"},"content":"* Responsibilities: Deliverables and deadline","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"### Wen Rui","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":"\u003cimg src\u003d\"images/currynia.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":"[[github](http://github.com/currynia)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":"[[portfolio](team/currynia.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DesSnowy"},"content":"* Role: Code quality","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DesSnowy"},"content":"* Responsibilities: Looks after code quality, ensures adherence to coding standards, etc.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DesSnowy"},"content":"### Lau Xiang Yu","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DesSnowy"},"content":"\u003cimg src\u003d\"images/dessnowy.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DesSnowy"},"content":"[[github](http://github.com/DesSnowy)] ","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DesSnowy"},"content":"[[portfolio](team/dessnowy.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DesSnowy"},"content":"* Responsibilities: Integration","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":"### Swaminathan Viswa","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":"\u003cimg src\u003d\"images/swaminathanviswa.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SwaminathanViswa"},"content":"[[github](http://github.com/SwaminathanViswa)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SwaminathanViswa"},"content":"[[portfolio](team/swaminathanviswa.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":"* Responsibilities: Responsible for quality of project documentations","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SwaminathanViswa"},"content":" ### Javier Tan Meng Wee","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Incogdino"},"content":"\u003cimg src\u003d\"images/incogdino.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Incogdino"},"content":"[[github](http://github.com/incogdino)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Incogdino"},"content":"[[portfolio](team/incogdino.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Incogdino"},"content":"* Role: Testing","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Incogdino"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time.","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":6,"DesSnowy":7,"currynia":5,"Incogdino":5,"-":37,"tohjh":7}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DesSnowy"},"content":"# KonTActs Developer Guide","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":"The **_Architecture Diagram_** given above explains the high-level design of the App.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":"- At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":"- At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"currynia"},"content":"- [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":"- [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":"- [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"currynia"},"content":"- [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"currynia"},"content":"The _Sequence Diagram_ below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"currynia"},"content":"- defines its _API_ in an `interface` with the same name as the Component.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"currynia"},"content":"- implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":"- executes user commands using the `Logic` component.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"currynia"},"content":"- listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"currynia"},"content":"- keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":"- depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"currynia"},"content":"- When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"currynia"},"content":"- All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"currynia"},"content":"- stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"currynia"},"content":"- stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"currynia"},"content":"- stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"currynia"},"content":"- does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"currynia"},"content":"- can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"currynia"},"content":"- inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"currynia"},"content":"- depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"currynia"},"content":"- `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"currynia"},"content":"- `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"currynia"},"content":"- `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"currynia"},"content":"- **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"currynia"},"content":" - Pros: Easy to implement.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"currynia"},"content":" - Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"currynia"},"content":"- **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"currynia"},"content":" - Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"currynia"},"content":" - Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"currynia"},"content":"- [Documentation guide](Documentation.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"currynia"},"content":"- [Testing guide](Testing.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"currynia"},"content":"- [Logging guide](Logging.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"currynia"},"content":"- [Configuration guide](Configuration.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"currynia"},"content":"- [DevOps guide](DevOps.md)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"currynia"},"content":"- has a need to manage a significant number of contacts","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"currynia"},"content":"- prefer desktop apps over other types","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"currynia"},"content":"- can type fast","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"currynia"},"content":"- prefers typing to mouse interactions","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"currynia"},"content":"- is reasonably comfortable using CLI apps","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"**Value proposition**: manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"SwaminathanViswa"},"content":"| Priority | As a/an …​ | I want to …​ | So that …​ |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"DesSnowy"},"content":"|-------|------------------|------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------|","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | store student\u0027s github username | I can easily reference them when grading assignments. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | user | add the student\u0027s contact number | I can easily reference them when I need to contact my students. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | add the contact details of other TAs | I can quickly reach out for help or collaboration. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | add contact details of professors | I can easily reach them for guidance or to pass on important information. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | delete contacts easily | I dont clutter the list with unwanted contacts. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | store the grades and progress of my students | I can keep track of which of my students need more guidance and follow up. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | store student\u0027s telegram username | I can easily reference them and contact them when needed to. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"SwaminathanViswa"},"content":"| `* * *` | CS2030S TA | see the student\u0027s MC or reasoning when they do not turn up for lessons | I can create make up lessons / check up on them. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"SwaminathanViswa"},"content":"| `* *` | CS2030S TA | have a function to hide the details of students that I do not need | I can only the the information that I want to see. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"SwaminathanViswa"},"content":"| `* *` | CS2030S TA | view the last modification date of student contact details | I can confirm the accuracy and recency of the information stored. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"SwaminathanViswa"},"content":"| `* *` | CS2030S TA | create contacts with optional fields | I can resepct the privacy of my students. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | search for a student’s GitHub username | I can quickly access their repository for grading and feedback. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | potential user | see the application populated with sample data | I can see how the app looks like when it is in use. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | put the contacts into different tabs | I can easily navigate between different types of contacts. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | use the command line interface to search for contacts | I can integrate the tool smoothly into my existing workflow. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | search for the contact details of professors/ other TAs | I can quickly contact them for help if needed. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | find my students house in time | I can offer them help in times of crisis. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | organise the contact of my students | I can view the details of each student with greater ease. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | import student contact information from a file | I can easily transfer data between devices. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | export student contact information to a file | I can backup or share contact details with other TAs or professors if needed. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | flag specific students for follow-up | I can easily identify students who may need additional support or guidance. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | choose to sort my students | I can group students based on their proficiency. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | filter the contact details that is shown | I can easily find the information of a particular group. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | filter contacts based on a certain criteria | I can access a specific subset of students that I want. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | tag students with custom labels | I can categorize students based on their progress or needs. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | use the command line to access my students work | have their work and contact and tags all tied together in one smooth workflow. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | experienced user | create shortcuts for commands that I use frequently | I can access the frequently used information quickly. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | new user | use a help function to check what this app offers | I can easily have the details of the commands to use in my fingertips. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"SwaminathanViswa"},"content":"| `*` | CS2030S TA | create automatic flags to indicate if a student\u0027s work is marked | I can monitor grading deadlines so that I can stay on top of my responsibilities without missing any critical dates. |","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"currynia"},"content":"(For all use cases below, the **System** is the `KonTActs` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"currynia"},"content":"**Use case: UC01 - Add contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"currynia"},"content":"1. User chooses to add a contact.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for the contact details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"currynia"},"content":"3. User enters the contact details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"currynia"},"content":"4. KonTActs adds the new contact.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects an error in the input format.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"currynia"},"content":" - 3a1.KonTActs requests for the corrected input.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"currynia"},"content":" - 3b2. User enters a new input.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"currynia"},"content":" - Steps 3a1 - 3a2 are repeated until input format is correct.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"currynia"},"content":" Use cases resume from step 4.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"currynia"},"content":"**Use case: UC02 - Delete contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"currynia"},"content":"**Precondition**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"currynia"},"content":"1. The task that the user wants to delete exists.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"currynia"},"content":"1. User indicates to delete a task.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"currynia"},"content":"2. KonTActs deletes the tasks and indicates success.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"currynia"},"content":"- 1a. KonTActs detects an error in the input.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"currynia"},"content":" - 1a1.KonTActs requests for the user to try again.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"currynia"},"content":" - 1a2. User enters the command again","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"currynia"},"content":" - Steps 1a1 - 1a2 are repeated until the input entered is correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"currynia"},"content":" Use case resumes from step 2.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"currynia"},"content":"**Use case: UC03 - Add grades of students**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"currynia"},"content":"**Precondition**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"currynia"},"content":"1. The student that the user wants to add grades exists.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"currynia"},"content":"2. The assignment that the user wants to add a grade to exists.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"currynia"},"content":"1. User chooses to add grades for a student.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for details of the student alongside the assignment and grade.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"currynia"},"content":"3. User enters the requested details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"currynia"},"content":"4. KonTActs updates the grade of the student.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"currynia"},"content":"- 4a. KonTActs detects an error in the entered data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"currynia"},"content":" - 4a1. KonTActs requests for the correct data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"currynia"},"content":" - 4a2. User enters new data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"currynia"},"content":" - Steps 4a1-4a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"currynia"},"content":"**Use case: UC04 - View Contact**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"currynia"},"content":"1. Current UI is not showing the entire contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"currynia"},"content":"2. User chooses to view the entire contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"currynia"},"content":"3. KonTActs displays the full list of contacts.\\","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"currynia"},"content":"- 1a. User has previously filtered the contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"currynia"},"content":" - 1a1. KonTActs displays the full contact list, removing the previous filters.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"currynia"},"content":"- 1b. KonTActs detects an error (e.g., unable to retrieve contacts).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"currynia"},"content":" - 1b1. KonTActs displays an error message.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"currynia"},"content":"**Use case: UC05 - Update contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"currynia"},"content":"1. TA chooses to update a contact’s details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"currynia"},"content":"2. KonTActs requests the contact’s identifier.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"currynia"},"content":"3. TA enters the identifier of the contact to update.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"currynia"},"content":"4. KonTActs displays the current details and requests the changes.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"currynia"},"content":"5. TA updates the relevant details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"currynia"},"content":"6. KonTActs saves and displays the changes.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs identifies that there is no such contact.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs requests for the correct data.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"currynia"},"content":" - 3a2. TA enters the correct data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"currynia"},"content":" - Steps 3a1-3a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"currynia"},"content":"**Use case: UC06 - Filter Contact List**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"currynia"},"content":"1. User chooses to filter the contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"currynia"},"content":"2. KonTActs requests the filter criteria (current overall grades, name, tele handle).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"currynia"},"content":"3. User enters the filter criteria.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"currynia"},"content":"4. KonTActs filters the contact list based on the entered criteria and displays the filtered list.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects an error in the entered filter criteria (e.g., incorrect input - invalid score input).","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs requests for the correct filter criteria.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"currynia"},"content":" - 3a2. Users enter new criteria.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"currynia"},"content":" - Steps 3a1-3a2 are repeated until the criteria entered are valid.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"currynia"},"content":"- \\*a. At any time, User chooses to cancel the filter action.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"currynia"},"content":"- \\*a1. KonTActs stops the filter operation and returns to the unfiltered contact list by using list","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"currynia"},"content":"\u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"currynia"},"content":"**Use case: UC07 - Create shortcut for commands**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"currynia"},"content":"1. User indicates to create a shortcut.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"currynia"},"content":"2. KonTActs request for the command that is frequently used.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"currynia"},"content":"3. User enters the command to be shortened.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"currynia"},"content":"4. KonTActs request for the shortcut input to replace the command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"currynia"},"content":"5. User enters the shortcut input.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"currynia"},"content":"6. KonTActs stores the shortcut and indicates success.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects that the command entered is not valid.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs requests for the correct command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"currynia"},"content":" - 3a2. User enters a new command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"currynia"},"content":" - Steps 3a1 - 3a2 are repeated until the command entered is valid.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"currynia"},"content":"- 5a. KonTActs detects that the shortcut is already in use.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"currynia"},"content":" - 5a1. KonTActs request for a new shortcut.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"currynia"},"content":" - 5a2. User enters a new shortcut.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"currynia"},"content":" - Steps 5a1 - 5a2 are repeated until the shortcut entered is valid.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"currynia"},"content":" Use case resumes from step 6.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"currynia"},"content":"- \\*a. At any time, User chooses to cancel the creation of a shortcut.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"currynia"},"content":" - \\*a1. KonTActs stops the creation.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"currynia"},"content":"**Use case: UC08 - Sort students based on proficiency**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"currynia"},"content":"**Precondition**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"currynia"},"content":"1. The address book contains a list of students/ contacts.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"currynia"},"content":"2. Contacts should have a proficiency rating associated to them.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"currynia"},"content":"1. User chooses to sort the students based on their proficiency.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"currynia"},"content":"2. User enters the sort command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"currynia"},"content":"3. KonTActs returns the list of students in the sorted order.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"currynia"},"content":"**Use case: UC09 - Export contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"currynia"},"content":"1. User chooses to export the contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for the format.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"currynia"},"content":"3. User selects the desired format.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"currynia"},"content":"4. KonTActs exports the contact list to the specified format and shows successful import.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":543,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":544,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"currynia"},"content":"- 2a. User selects an unsupported format.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"currynia"},"content":" - 2a1. KonTActs displays an error message and provides the list of formats that are supported.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"currynia"},"content":" Use case resumes from step 3.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"currynia"},"content":"**Use case: UC10 - Request for help**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"currynia"},"content":"1. User inputs help command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"currynia"},"content":"2. KonTActs shows a help page.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"currynia"},"content":"- 1a. User inputs help for a specific command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"currynia"},"content":" - 1a1. KonTActs displays a help page for that command.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"currynia"},"content":"**Use case: UC11 - Tag students with custom labels**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"currynia"},"content":"**Precondition**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"currynia"},"content":"1. The student that the user wants to tag exists.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"currynia"},"content":"1. User chooses to tag a student.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":584,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for details of the student alongside the tag to label the student.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"currynia"},"content":"3. User enters the requested details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"currynia"},"content":"4. KonTActs tags the student with the suggested label.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":588,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects an error in the entered data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs requests for the correct data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"currynia"},"content":" - 3a2. User enters new data.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":596,"author":{"gitId":"currynia"},"content":" - Steps 3a1-3a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"currynia"},"content":" Use case resumes from step 3.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":602,"author":{"gitId":"currynia"},"content":"**Use case: UC12 - View last modification date of contact details**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"currynia"},"content":"1. User requests for last modification date of contact.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":607,"author":{"gitId":"currynia"},"content":"2. KonTActs shows the last modification date for that contact.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":610,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"currynia"},"content":"- 1a. User inputs a non-existing contact.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"currynia"},"content":" - 1a1. KonTActs requests for corrected contact details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"currynia"},"content":" - 1a2. User inputs new contact details.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"currynia"},"content":" - Steps 1a1 - 1a2 are repeated until the input contact is correct.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":619,"author":{"gitId":"currynia"},"content":" Use case resumes from step 2.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":620,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":621,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":622,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":623,"author":{"gitId":"currynia"},"content":"**Use case: UC13 - Import contacts**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":624,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":625,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":626,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":627,"author":{"gitId":"currynia"},"content":"1. User chooses to import the contact list.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":628,"author":{"gitId":"currynia"},"content":"2. KonTActs requests for the file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":629,"author":{"gitId":"currynia"},"content":"3. User selects the desired file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":630,"author":{"gitId":"currynia"},"content":"4. KonTActs import the contact list from the specified file and shows successful import.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":631,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":632,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":633,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":634,"author":{"gitId":"currynia"},"content":"**Extensions**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":635,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":636,"author":{"gitId":"currynia"},"content":"- 3a. KonTActs detects an unsupported or corrupted file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":637,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":638,"author":{"gitId":"currynia"},"content":" - 3a1. KonTActs indicates it is unable to import from that file and requests for a new file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":639,"author":{"gitId":"currynia"},"content":" - 3a2. User selects a new file.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":640,"author":{"gitId":"currynia"},"content":" - Steps 3a1 - 3a2 are repeated until KonTActs is able to import contacts from the file.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":641,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":642,"author":{"gitId":"currynia"},"content":" Use case resumes from step 4.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":643,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":644,"author":{"gitId":"currynia"},"content":"- \\*a. At any time, User chooses to cancel the import.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":645,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":646,"author":{"gitId":"currynia"},"content":" - \\*a1. KonTActs stops the import.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":647,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":648,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":649,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":650,"author":{"gitId":"currynia"},"content":" \u003cbr\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":651,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":652,"author":{"gitId":"currynia"},"content":"**Use case: UC14 - Create automatic flags for students’ work if marked**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":653,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":654,"author":{"gitId":"currynia"},"content":"Actor: TA","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":655,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":656,"author":{"gitId":"currynia"},"content":"**MSS**","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":657,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":658,"author":{"gitId":"currynia"},"content":"1. TA marks a student’s work.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":659,"author":{"gitId":"currynia"},"content":"2. KonTActs creates a flag to show the student’s work as marked.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":660,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":661,"author":{"gitId":"currynia"},"content":" Use case ends.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":662,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":663,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":664,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":665,"author":{"gitId":"Incogdino"},"content":"1. Should work on any mainstream OS as long as it has Java 17 or above installed.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":666,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":667,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":668,"author":{"gitId":"Incogdino"},"content":"4. Commands should be easy to remember.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":669,"author":{"gitId":"Incogdino"},"content":"5. Ui should be easy to navigate and intuitive.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":670,"author":{"gitId":"Incogdino"},"content":"6. KonTActs should be easy to use for new users.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":671,"author":{"gitId":"Incogdino"},"content":"7. The system should work on both 32 bit and 64 bit environments.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":672,"author":{"gitId":"Incogdino"},"content":"8. Contact details are securely stored.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":673,"author":{"gitId":"Incogdino"},"content":"9. The application should have an uptime of at least 99.9% to ensure constant availability for users.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":674,"author":{"gitId":"Incogdino"},"content":"10. The application should automatically save data after every change to avoid data loss in case of a crash.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":675,"author":{"gitId":"Incogdino"},"content":"11. There should be proper documentation for the code and application usage to assist developers in future updates.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":676,"author":{"gitId":"Incogdino"},"content":"12. Error messages should be descriptive, providing users with clear guidance on how to resolve the issue.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":677,"author":{"gitId":"Incogdino"},"content":"13. Searching for or filtering contacts should take less than 5 seconds.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":678,"author":{"gitId":"Incogdino"},"content":"14. Stored contacts are persisted between sessions.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":679,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":680,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":681,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":682,"author":{"gitId":"DesSnowy"},"content":"* **Contact**: An individual (e.g. student) stored in the system, typically having details regarding them such as their name, github username and etc.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":683,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":684,"author":{"gitId":"DesSnowy"},"content":"* **Easy to use for new users**: intuitive commands that are easy to understand and UI that is easy to navigate.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":685,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":686,"author":{"gitId":"DesSnowy"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":687,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":688,"author":{"gitId":"DesSnowy"},"content":"* **Average typing speed**: about 40 words per minute.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":689,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":690,"author":{"gitId":"DesSnowy"},"content":"* **Uptime**: The system should be operational during that period of time.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":691,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":692,"author":{"gitId":"DesSnowy"},"content":"* **Between sessions**: Every opening and closing of the application.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":693,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":694,"author":{"gitId":"DesSnowy"},"content":"* **Proper documentation**: A detailed user and developer guide which helps future users and developers to understand and use the code.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":695,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":696,"author":{"gitId":"DesSnowy"},"content":"* **Typical usage**: Normal or expected usage patterns of the application, such as the frequency of adding, deleting, or viewing contacts during everyday use.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":697,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":698,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":699,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":700,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":701,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":702,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":703,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":704,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":705,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":706,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":707,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":708,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":709,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":710,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":711,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":712,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":713,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":714,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":715,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":716,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":717,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":718,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":719,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":720,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":721,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":722,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":723,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":724,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":725,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":726,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":727,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":728,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":729,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":730,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":731,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":732,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":733,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":734,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":735,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":736,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":737,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":738,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":739,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":740,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":741,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":742,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":743,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":744,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":745,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":746,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":747,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":748,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":749,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":750,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":751,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":752,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":753,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-29","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":30,"DesSnowy":10,"currynia":359,"Incogdino":12,"-":337,"tohjh":5}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DesSnowy"},"content":"# KonTActs User Guide","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"konTActs is a **desktop app for managing contacts, optimized for use via a Command Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, konTActs can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"1. Download the latest `.jar` file from [here](https://github.com/se-edu/addressbook-level3/releases).","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar addressbook.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"### Adding a person: `add`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"Adds a person to the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"**Tip:** A person can have any number of tags (including 0)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"### Listing all persons : `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"Shows a list of all persons in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"### Editing a person : `edit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"Edits an existing person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"* You can remove all the person’s tags by typing `t/` without","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"### Locating persons by name: `find`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"Finds persons whose names contain any of the given keywords.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* Persons matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"### Deleting a person : `delete`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"Deletes the specified person from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"* Deletes the person at the specified `INDEX`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* The index refers to the index number shown in the displayed person list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"* `list` followed by `delete 2` deletes the 2nd person in the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st person in the results of the `find` command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee e/jameslee@example.com`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":1,"DesSnowy":2,"-":203}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DesSnowy"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eKonTActs\u003c/a\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/se-edu/addressbook-level3\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"DesSnowy":1,"-":66}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"KonTActs\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DesSnowy"},"content":"# KonTActs","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"[![Java CI](https://github.com/AY2425S1-CS2103T-T11-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2425S1-CS2103T-T11-2/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-T11-2/tp/graph/badge.svg)](https://codecov.io/github/AY2425S1-CS2103T-T11-2/tp)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"**KonTActs is a desktop application for managing your students\u0027, fellow TAs\u0027, and professors\u0027 contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":"- If you are interested in using KonTActs, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":"- If you are interested about developing KonTActs, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DesSnowy"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"- Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2024-09-29","isFullCredit":false}],"authorContributionMap":{"DesSnowy":4,"currynia":4,"Incogdino":2,"-":13}},{"path":"docs/team/currynia.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DesSnowy"},"content":" layout: default.md","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Wen Rui\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"- **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":" - What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":" - Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":" - Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":" - Credits: _{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}_","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":"- **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":"- **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"- **Project management**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" - Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":"- **Enhancements to existing features**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" - Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":" - Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"currynia"},"content":"- **Documentation**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":" - User Guide:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"currynia"},"content":" - Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":" - Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" - Developer Guide:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" - Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":"- **Community**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" - PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" - Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"currynia"},"content":" - Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"currynia"},"content":" - Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":"- **Tools**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"currynia"},"content":" - Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"currynia"},"content":" - Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"currynia"},"content":"- _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"DesSnowy":2,"currynia":50}},{"path":"docs/team/dessnowy.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Xiang Yu\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"DesSnowy":1,"-":45}},{"path":"docs/team/incogdino.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"Incogdino"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DesSnowy"},"content":" layout: default.md","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Javier\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Incogdino"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Incogdino"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"DesSnowy":2,"Incogdino":9}},{"path":"docs/team/swaminathanviswa.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"SwaminathanViswa"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DesSnowy"},"content":" layout: default.md","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Swaminathan Viswa\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SwaminathanViswa"},"content":"---","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SwaminathanViswa"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SwaminathanViswa"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SwaminathanViswa"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SwaminathanViswa"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SwaminathanViswa"},"content":"* **Project management**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SwaminathanViswa"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SwaminathanViswa"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SwaminathanViswa"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SwaminathanViswa"},"content":" * User Guide:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SwaminathanViswa"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SwaminathanViswa"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SwaminathanViswa"},"content":"* **Community**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SwaminathanViswa"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":"* **Tools**:","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SwaminathanViswa"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SwaminathanViswa"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":44,"DesSnowy":2}},{"path":"docs/team/tohjh.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DesSnowy"},"content":" title: \"Tohjh\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"DesSnowy":1,"-":45}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DesSnowy"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_NAME \u003d \"The person name provided is invalid\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Incogdino"},"content":" builder.append(\"; Github: \")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Incogdino"},"content":" .append(person.getGithub());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"DesSnowy":1,"Incogdino":2,"-":51}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Incogdino"},"content":" + \"[\" + PREFIX_TAG + \"TAG]... \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Incogdino"},"content":" + PREFIX_GITHUB + \"GITHUB\\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" + PREFIX_TELEGRAM + \"@viswa \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Incogdino"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Incogdino"},"content":" + PREFIX_GITHUB + \"John139\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":2,"Incogdino":5,"-":82}},{"path":"src/main/java/seedu/address/logic/commands/AddGradeCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCORE;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" * Add assignment grades to an existing person in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":"public class AddGradeCommand extends Command {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" public static final String COMMAND_WORD \u003d \"addGrade\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" public static final String MESSAGE_USAGE \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":" COMMAND_WORD","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":" + \": Adds a grade of an assignment to the person. \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"currynia"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":" + PREFIX_NAME","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":" + \"NAME \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"currynia"},"content":" + PREFIX_ASSIGNMENT","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":" + \"ASSIGNMENT \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" + PREFIX_SCORE","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" + \"SCORE \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":" + \"Example: \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":" + COMMAND_WORD","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":" + \" \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" + PREFIX_NAME","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" + \"John Doe \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"currynia"},"content":" + PREFIX_ASSIGNMENT","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"currynia"},"content":" + \"Ex09 \"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"currynia"},"content":" + PREFIX_SCORE","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":" + \"9 \";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"currynia"},"content":" private final Name personName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"currynia"},"content":" private final Float score;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"currynia"},"content":" private final String assignmentName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"currynia"},"content":" * @param personName Name of the person.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"currynia"},"content":" * @param score Score of the assignment.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"currynia"},"content":" * @param assignmentName Name of assignment.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"currynia"},"content":" public AddGradeCommand(String personName, Float score, String assignmentName) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"currynia"},"content":" requireAllNonNull(personName, score, assignmentName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"currynia"},"content":" this.personName \u003d new Name(personName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"currynia"},"content":" this.score \u003d score;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"currynia"},"content":" this.assignmentName \u003d assignmentName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tohjh"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"currynia"},"content":" private static Person createGradeToAddToPerson(Person person, String assignmentName, float score) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"currynia"},"content":" assert person !\u003d null;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"currynia"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"currynia"},"content":" Phone phone \u003d person.getPhone();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"currynia"},"content":" Email email \u003d person.getEmail();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"currynia"},"content":" Address address \u003d person.getAddress();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"currynia"},"content":" Set\u003cTag\u003e tags \u003d person.getTags();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"currynia"},"content":" Telegram telegram \u003d person.getTelegram();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"currynia"},"content":" Github github \u003d person.getGithub();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"currynia"},"content":" Assignment assignment \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"currynia"},"content":" new Assignment(assignmentName, score);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"currynia"},"content":" return new Person(name, phone, email, address, telegram, tags, github, assignment);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"currynia"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"currynia"},"content":" // to add error handling","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":" Person person \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"currynia"},"content":" model.getAddressBook().getPersonList().stream()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"currynia"},"content":" .filter(p -\u003e p.getName().equals(personName))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"currynia"},"content":" .toList()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"currynia"},"content":" .get(0);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"currynia"},"content":" model.setPerson(person, createGradeToAddToPerson(person, assignmentName, score));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"currynia"},"content":" return new CommandResult(\"\"); // placeholder string to be added","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"currynia"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"currynia"},"content":" return personName + \" \" + assignmentName + \" \" + score;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"currynia"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"currynia"},"content":" if (other instanceof AddGradeCommand otherCommand) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"currynia"},"content":" return otherCommand.personName.equals(personName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"currynia"},"content":" \u0026\u0026 Objects.equals(otherCommand.assignmentName, assignmentName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"currynia"},"content":" \u0026\u0026 Objects.equals(otherCommand.score, score);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"currynia"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"currynia":106,"tohjh":3}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DesSnowy"},"content":" + \": Deletes the person identified by the name shown in the displayed person list.\\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DesSnowy"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DesSnowy"},"content":" + PREFIX_NAME + \"NAME\\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DesSnowy"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DesSnowy"},"content":" + PREFIX_NAME + \"John Doe\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DesSnowy"},"content":" private final Name targetName;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DesSnowy"},"content":" public DeleteCommand(Name targetName) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DesSnowy"},"content":" this.targetName \u003d targetName;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DesSnowy"},"content":" Person personToDelete \u003d lastShownList","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DesSnowy"},"content":" .stream()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DesSnowy"},"content":" .filter(person -\u003e person.getName().equals(targetName))","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DesSnowy"},"content":" .findFirst()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DesSnowy"},"content":" .orElseThrow(() -\u003e new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"DesSnowy"},"content":" return targetName.equals(otherDeleteCommand.targetName);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DesSnowy"},"content":" .add(\"targetName\", targetName)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"DesSnowy":17,"-":55}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"tohjh"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Incogdino"},"content":" + \"[\" + PREFIX_TAG + \"TAG] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Incogdino"},"content":" + \"[\" + PREFIX_GITHUB + \"GitHub] \\n\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Incogdino"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Incogdino"},"content":" + PREFIX_GITHUB + \"john123\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"currynia"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"currynia"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"currynia"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"currynia"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"currynia"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"currynia"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"currynia"},"content":" Telegram updatedTelegram \u003d editPersonDescriptor.getTelegram().orElse(personToEdit.getTelegram());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"currynia"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"currynia"},"content":" Github updatedGithub \u003d editPersonDescriptor.getGithub().orElse(personToEdit.getGithub());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"currynia"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"currynia"},"content":" updatedTelegram, updatedTags, updatedGithub);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"currynia"},"content":" if (!(other instanceof EditCommand otherEditCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SwaminathanViswa"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"tohjh"},"content":" private Assignment assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Incogdino"},"content":" private Github github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"currynia"},"content":" public EditPersonDescriptor() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"SwaminathanViswa"},"content":" setTelegram(toCopy.telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"tohjh"},"content":" setAssignment(toCopy.assignment);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Incogdino"},"content":" setGithub(toCopy.github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"SwaminathanViswa"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, telegram, tags, github);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"SwaminathanViswa"},"content":" public Optional\u003cTelegram\u003e getTelegram() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"SwaminathanViswa"},"content":" return Optional.ofNullable(telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"currynia"},"content":" public void setTelegram(Telegram telegram) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"currynia"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"currynia"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"currynia"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"currynia"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"currynia"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"Incogdino"},"content":" public Optional\u003cGithub\u003e getGithub() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Incogdino"},"content":" return Optional.ofNullable(github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"currynia"},"content":" public void setGithub(Github username) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"currynia"},"content":" this.github \u003d username;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"currynia"},"content":" if (!(other instanceof EditPersonDescriptor otherEditPersonDescriptor)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"SwaminathanViswa"},"content":" \u0026\u0026 Objects.equals(telegram, otherEditPersonDescriptor.telegram)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"Incogdino"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"Incogdino"},"content":" \u0026\u0026 Objects.equals(github, otherEditPersonDescriptor.github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"SwaminathanViswa"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"Incogdino"},"content":" .add(\"github\", github)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"tohjh"},"content":" public Optional\u003cAssignment\u003e getAssignment() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"tohjh"},"content":" return Optional.ofNullable(assignment);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"tohjh"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"currynia"},"content":" public void setAssignment(Assignment assignment) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"currynia"},"content":" this.assignment \u003d assignment;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":8,"currynia":41,"Incogdino":18,"-":213,"tohjh":6}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_TELEGRAM, PREFIX_TAG, PREFIX_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_EMAIL, PREFIX_TELEGRAM, PREFIX_GITHUB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SwaminathanViswa"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_TELEGRAM, PREFIX_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram telegram \u003d ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Incogdino"},"content":" Github github \u003d ParserUtil.parseGithub(argMultimap.getValue(PREFIX_GITHUB).get());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SwaminathanViswa"},"content":" Person person \u003d new Person(name, phone, email, address, telegram, tagList, github);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":11,"Incogdino":3,"-":57}},{"path":"src/main/java/seedu/address/logic/parser/AddGradeCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCORE;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":" * Parses input arguments and creates a new AddGradeCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"public class AddGradeCommandParser implements Parser\u003cAddGradeCommand\u003e {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":" public AddGradeCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_ASSIGNMENT, PREFIX_SCORE);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":" String name \u003d argMultimap.getValue(PREFIX_NAME).get();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":" Float score \u003d ParserUtil.parseScore(argMultimap.getValue(PREFIX_SCORE).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":" String assignmentName \u003d ParserUtil.parseAssignmentName(argMultimap.getValue(PREFIX_ASSIGNMENT).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":" return new AddGradeCommand(name, score, assignmentName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"currynia":26}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"currynia"},"content":" case AddGradeCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":" return new AddGradeCommandParser().parse(arguments);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"currynia":4,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":" public static final Prefix PREFIX_ASSIGNMENT \u003d new Prefix(\"asgn/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":" public static final Prefix PREFIX_SCORE \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":" public static final Prefix PREFIX_TELEGRAM \u003d new Prefix(\"telegram/\");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Incogdino"},"content":" public static final Prefix PREFIX_GITHUB \u003d new Prefix(\"github/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":1,"currynia":2,"Incogdino":1,"-":14}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DesSnowy"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DesSnowy"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DesSnowy"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME) || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DesSnowy"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DesSnowy"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DesSnowy"},"content":" return new DeleteCommand(name);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DesSnowy"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DesSnowy"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DesSnowy"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DesSnowy"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DesSnowy"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DesSnowy"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"DesSnowy":19,"-":23}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_ADDRESS, PREFIX_TELEGRAM, PREFIX_TAG, PREFIX_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SwaminathanViswa"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_ADDRESS, PREFIX_TELEGRAM, PREFIX_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SwaminathanViswa"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM).isPresent()) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SwaminathanViswa"},"content":" editPersonDescriptor.setTelegram(ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Incogdino"},"content":" if (argMultimap.getValue(PREFIX_GITHUB).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Incogdino"},"content":" editPersonDescriptor.setGithub(ParserUtil.parseGithub(argMultimap.getValue(PREFIX_GITHUB).get()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":8,"Incogdino":4,"-":82}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" * whitespaces will be trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" * Parses a {@code String name} into a {@code Name}. Leading and trailing whitespaces will be","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" * trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"SwaminathanViswa"},"content":" * Parses a {@code String telegram} into an {@code Telegram}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"SwaminathanViswa"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SwaminathanViswa"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SwaminathanViswa"},"content":" * @throws ParseException if the given {@code telegram} is invalid.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"SwaminathanViswa"},"content":" public static Telegram parseTelegram(String address) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SwaminathanViswa"},"content":" requireNonNull(address);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SwaminathanViswa"},"content":" String trimmedTelegram \u003d address.trim();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SwaminathanViswa"},"content":" if (!Telegram.isValidTelegram(trimmedTelegram)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SwaminathanViswa"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SwaminathanViswa"},"content":" return new Telegram(trimmedTelegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"currynia"},"content":" * Parses String assignment without trailing spaces.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"currynia"},"content":" public static String parseAssignmentName(String assignment) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"currynia"},"content":" requireNonNull(assignment);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"currynia"},"content":" return assignment.trim();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"currynia"},"content":" * Parses String into float.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"currynia"},"content":" public static Float parseScore(String score) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"currynia"},"content":" requireNonNull(score);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"currynia"},"content":" return Float.parseFloat(score.trim());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Incogdino"},"content":" * Parses a GitHub {@code String username} into an {@code Github}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Incogdino"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Incogdino"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Incogdino"},"content":" * @throws ParseException if the given {@code username} is invalid.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Incogdino"},"content":" public static Github parseGithub(String username) throws ParseException {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"Incogdino"},"content":" requireNonNull(username);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Incogdino"},"content":" String trimmedUsername \u003d username.trim();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Incogdino"},"content":" if (!Github.isValidGithubUsername(trimmedUsername)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Incogdino"},"content":" throw new ParseException(Github.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Incogdino"},"content":" return new Github(trimmedUsername);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":16,"currynia":23,"Incogdino":15,"-":120}},{"path":"src/main/java/seedu/address/model/assignment/Assignment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.model.assignment;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":" * Represents an Assignment in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"public class Assignment {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":" public final String assignmentName;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":" public final float score;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":" * Constructs a {@code Assignment}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":" * @param assignmentName A valid assignment name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":" * @param score A score for the assignment.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":" public Assignment(String assignmentName, float score) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":" this.assignmentName \u003d assignmentName;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":" this.score \u003d score;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":" return \"Assignment:\" + assignmentName + \" \" + score;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" public float getScore() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":" return score;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":" public String getAssignmentName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":" return assignmentName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"currynia":34}},{"path":"src/main/java/seedu/address/model/person/Github.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Incogdino"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Incogdino"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Incogdino"},"content":" * Represents a Person\u0027s github account in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidGithubUsername(String)}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Incogdino"},"content":"public class Github {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Incogdino"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Incogdino"},"content":" \"Github usernames should only contain - and alphanumeric characters\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Incogdino"},"content":" public static final String VALIDATION_REGEX \u003d \"^[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+)*$\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Incogdino"},"content":" public final String username;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Incogdino"},"content":" * Constructs an {@code Github}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Incogdino"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Incogdino"},"content":" * @param githubUsername A valid GitHub username.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Incogdino"},"content":" public Github(String githubUsername) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Incogdino"},"content":" requireNonNull(githubUsername);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Incogdino"},"content":" checkArgument(isValidGithubUsername(githubUsername), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Incogdino"},"content":" username \u003d githubUsername;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Incogdino"},"content":" * Returns if a given string is a valid username.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Incogdino"},"content":" public static boolean isValidGithubUsername(String test) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Incogdino"},"content":" return test.length() \u003c\u003d 39 \u0026\u0026 test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Incogdino"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Incogdino"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Incogdino"},"content":" return this.username;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Incogdino"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Incogdino"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Incogdino"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Incogdino"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Incogdino"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Incogdino"},"content":" if (!(other instanceof Github)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Incogdino"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Incogdino"},"content":" Github otherGithub \u003d (Github) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Incogdino"},"content":" return username.equals(otherGithub.username);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Incogdino"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Incogdino"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Incogdino"},"content":" return username.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Incogdino"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"Incogdino":59}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Incogdino"},"content":" private final Github github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SwaminathanViswa"},"content":" private final Telegram telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":" private Assignment assignment;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":" public Person(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" Name name,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" Phone phone,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":" Email email,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":" Address address,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":" Telegram telegram,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" Set\u003cTag\u003e tags,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" Github github) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Incogdino"},"content":" this.github \u003d github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"currynia"},"content":" * Contains an additional assignment field.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"currynia"},"content":" public Person(","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"currynia"},"content":" Name name,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"currynia"},"content":" Phone phone,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"currynia"},"content":" Email email,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"currynia"},"content":" Address address,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"currynia"},"content":" Telegram telegram,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"currynia"},"content":" Set\u003cTag\u003e tags,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"currynia"},"content":" Github github,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"currynia"},"content":" Assignment assignment) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"currynia"},"content":" requireAllNonNull(name, phone, email, address, telegram, tags, github);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"currynia"},"content":" this.github \u003d github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"currynia"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"currynia"},"content":" this.assignment \u003d assignment;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SwaminathanViswa"},"content":" public Telegram getTelegram() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SwaminathanViswa"},"content":" return telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"currynia"},"content":" public Assignment getAssignment() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"currynia"},"content":" return assignment;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"currynia"},"content":" public void setAssignment(Assignment assignment) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"currynia"},"content":" this.assignment \u003d assignment;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Incogdino"},"content":" public Github getGithub() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Incogdino"},"content":" return github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"currynia"},"content":" return otherPerson !\u003d null \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"currynia"},"content":" * Returns true if both persons have the same identity and data fields. This defines a stronger","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"currynia"},"content":" * notion of equality between two persons.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"currynia"},"content":" if (!(other instanceof Person otherPerson)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"currynia"},"content":" return","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"currynia"},"content":" name.equals(otherPerson.name)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SwaminathanViswa"},"content":" \u0026\u0026 telegram.equals(otherPerson.telegram)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Incogdino"},"content":" \u0026\u0026 tags.equals(otherPerson.tags)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Incogdino"},"content":" \u0026\u0026 github.equals(otherPerson.github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"SwaminathanViswa"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Incogdino"},"content":" .add(\"github\", github)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"currynia"},"content":" .add(\"assignment\", assignment)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":9,"currynia":44,"Incogdino":8,"-":114}},{"path":"src/main/java/seedu/address/model/person/Telegram.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"SwaminathanViswa"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SwaminathanViswa"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SwaminathanViswa"},"content":"/**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SwaminathanViswa"},"content":" * Represents a Person\u0027s telegram in the address book.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SwaminathanViswa"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegram(String)}","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"public class Telegram {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Telegram can take any values, and it should not be blank\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"content":" /*","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SwaminathanViswa"},"content":" public final String value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":" * Constructs an {@code Address}.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SwaminathanViswa"},"content":" *","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":" * @param telegram A valid telegram.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SwaminathanViswa"},"content":" public Telegram(String telegram) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SwaminathanViswa"},"content":" checkArgument(isValidTelegram(telegram), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SwaminathanViswa"},"content":" value \u003d telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" * Returns true if a given string is a valid telegram.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SwaminathanViswa"},"content":" public static boolean isValidTelegram(String test) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" public String toString() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":" return value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SwaminathanViswa"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" return true;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SwaminathanViswa"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SwaminathanViswa"},"content":" if (!(other instanceof Telegram)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SwaminathanViswa"},"content":" return false;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram otherTelegram \u003d (Telegram) other;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SwaminathanViswa"},"content":" return value.equals(otherTelegram.value);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"SwaminathanViswa"},"content":" @Override","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SwaminathanViswa"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SwaminathanViswa"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"SwaminathanViswa"},"content":"}","lastModifiedDate":"2024-10-07","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":65}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"friends\"), new Github(\"Alex\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"colleagues\", \"friends\"), new Github(\"Bernice\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"neighbours\"), new Github(\"Charlotte\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"family\"), new Github(\"david\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"classmates\"), new Github(\"Irfan\")),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"), new Telegram(\"@viswa\"),","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Incogdino"},"content":" getTagSet(\"colleagues\"), new Github(\"Roy\"))","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":7,"Incogdino":7,"-":48}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"tohjh"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" private final String telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Incogdino"},"content":" private final String github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" private final String assignmentName;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" private final Float assignmentScore;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":" @JsonProperty(\"telegram\") String telegram, @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"tohjh"},"content":" @JsonProperty(\"github\") String github, @JsonProperty(\"assignment\") String assignment,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"tohjh"},"content":" @JsonProperty(\"assignmentScore\") Float assignmentScore) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"tohjh"},"content":" this.assignmentName \u003d assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"tohjh"},"content":" this.assignmentScore \u003d assignmentScore;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Incogdino"},"content":" this.github \u003d github;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"SwaminathanViswa"},"content":" telegram \u003d source.getTelegram().value;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Incogdino"},"content":" github \u003d source.getGithub().username;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"tohjh"},"content":" Assignment assignment \u003d source.getAssignment();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"tohjh"},"content":" assignmentName \u003d assignment !\u003d null ? assignment.assignmentName : null; // Get assignment name","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"tohjh"},"content":" assignmentScore \u003d assignment !\u003d null ? assignment.score : null;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SwaminathanViswa"},"content":" if (telegram \u003d\u003d null) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"SwaminathanViswa"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram.class.getSimpleName()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"SwaminathanViswa"},"content":" if (!Telegram.isValidTelegram(telegram)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"SwaminathanViswa"},"content":" throw new IllegalValueException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"SwaminathanViswa"},"content":" final Telegram modelTelegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Incogdino"},"content":" if (github \u003d\u003d null) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Incogdino"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Github.class.getSimpleName()));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Incogdino"},"content":" if (!Github.isValidGithubUsername(github)) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Incogdino"},"content":" throw new IllegalValueException(Github.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Incogdino"},"content":" final Github modelGithub \u003d new Github(github);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"tohjh"},"content":" Assignment modelAssignment \u003d null;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"tohjh"},"content":" if (assignmentName !\u003d null \u0026\u0026 assignmentScore !\u003d null) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"tohjh"},"content":" modelAssignment \u003d new Assignment(assignmentName, assignmentScore); // Create Assignment object","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"tohjh"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"currynia"},"content":" return new Person(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"currynia"},"content":" modelName, modelPhone, modelEmail,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"currynia"},"content":" modelAddress, modelTelegram, modelTags, modelGithub, modelAssignment);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":15,"currynia":5,"Incogdino":12,"-":107,"tohjh":12}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"tohjh"},"content":" private Label assignment;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Incogdino"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Incogdino"},"content":" private Label github;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"tohjh"},"content":" if (person.getAssignment() !\u003d null) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"tohjh"},"content":" assignment.setText(person.getAssignment().toString());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"tohjh"},"content":" } else {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"tohjh"},"content":" assignment.setText(\"No assignment available\"); // Optional: for better user feedback","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"tohjh"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Incogdino"},"content":" if (person.getGithub() !\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Incogdino"},"content":" github.setText(person.getGithub().toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Incogdino"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Incogdino"},"content":" github.setText(\"GitHub username unspecified\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"Incogdino":7,"-":60,"tohjh":6}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"tohjh"},"content":" \u003cLabel fx:id\u003d\"assignment\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$assignment\" /\u003e","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Incogdino"},"content":" \u003cLabel fx:id\u003d\"github\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$Github\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"tohjh"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"Incogdino":1,"-":36,"tohjh":2}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DesSnowy"},"content":" String deleteCommand \u003d \"delete\" + NAME_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DesSnowy"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"SwaminathanViswa"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + TELEGRAM_DESC_AMY + GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":3,"DesSnowy":3,"Incogdino":1,"-":171}},{"path":"src/test/java/seedu/address/logic/commands/AddGradeCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"import seedu.address.testutil.TypicalPersons;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":"public class AddGradeCommandTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":" public void constructor_nullAssignmentFormat_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddGradeCommand(null, 0f, null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" public void constructor_validAddGradeCommandFormat_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":" AddGradeCommand command \u003d new AddGradeCommand(\"John Doe\", 9.0f, \"Ex09\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" assertNotNull(command);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"currynia"},"content":" public void execute_validPersonGrade_success() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"currynia"},"content":" Person testPerson \u003d TypicalPersons.ALICE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"currynia"},"content":" AddGradeCommand command \u003d new AddGradeCommand(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"currynia"},"content":" testPerson.getName().toString(),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":" 9.0f,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"currynia"},"content":" \"Ex09\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" command.execute(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":" assertEquals(model","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"currynia"},"content":" .getAddressBook()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"currynia"},"content":" .getPersonList()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"currynia"},"content":" .stream().filter(person -\u003e person","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"currynia"},"content":" .getName()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"currynia"},"content":" .equals(testPerson.getName())).toList().get(0).getAssignment().getScore(), 9.0f);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"currynia":47}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ASSIGNMENT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String VALID_TELEGRAM_AMY \u003d \"@amy\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String VALID_TELEGRAM_BOB \u003d \"@bob\";","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Incogdino"},"content":" public static final String VALID_GITHUB_BOB \u003d \"Bob\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Incogdino"},"content":" public static final String VALID_GITHUB_AMY \u003d \"Amy\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"currynia"},"content":" public static final String VALID_ASSIGNMENT_ONE \u003d \"Ex01\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":" public static final Float VALID_SCORE \u003d 10f;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String TELEGRAM_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SwaminathanViswa"},"content":" public static final String TELEGRAM_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"currynia"},"content":" public static final String ASSIGNMENT_DESC_ONE \u003d \" \" + PREFIX_ASSIGNMENT + VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"currynia"},"content":" public static final String SCORE_DESC \u003d \" \" + PREFIX_SCORE + VALID_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Incogdino"},"content":" public static final String GITHUB_DESC_AMY \u003d \" \" + PREFIX_GITHUB + VALID_GITHUB_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Incogdino"},"content":" public static final String GITHUB_DESC_BOB \u003d \" \" + PREFIX_GITHUB + VALID_GITHUB_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DesSnowy"},"content":" public static final String VALID_NAME_MISSING \u003d \"Gonathan Lee\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":7,"DesSnowy":2,"currynia":7,"Incogdino":5,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_MISSING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DesSnowy"},"content":" public void execute_validNameUnfilteredList_success() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DesSnowy"},"content":" public void execute_missingNameUnfilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DesSnowy"},"content":" Person missingPerson \u003d new PersonBuilder().withName(VALID_NAME_MISSING).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(missingPerson.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DesSnowy"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DesSnowy"},"content":" public void execute_validNameFilteredList_success() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(personToDelete.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DesSnowy"},"content":" public void execute_missingNameFilteredList_throwsCommandException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DesSnowy"},"content":" Person hiddenPerson \u003d model.getFilteredPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DesSnowy"},"content":" // ensures that notShownName is still in address book list","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DesSnowy"},"content":" assertTrue(model.hasPerson(hiddenPerson));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(hiddenPerson.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"DesSnowy"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_NAME);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"DesSnowy"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"DesSnowy"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(alice.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(bob.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(alice.getName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"DesSnowy"},"content":" Name targetName \u003d new PersonBuilder().withName(\"Alice\").build().getName();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetName);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"DesSnowy"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetName\u003d\" + targetName + \"}\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"DesSnowy":26,"-":99}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"currynia"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"currynia"},"content":" public void assignment_null_handled() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"currynia"},"content":" Assignment testAssignment \u003d new Assignment(VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"currynia"},"content":" assertEquals(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"currynia"},"content":" new EditPersonDescriptorBuilder()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"currynia"},"content":" .withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"currynia"},"content":" .build().getAssignment()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"currynia"},"content":" .orElse(testAssignment),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"currynia"},"content":" testAssignment);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"currynia"},"content":" assertEquals(standardCommand, commandWithSameValues);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"currynia"},"content":" assertEquals(standardCommand, standardCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"currynia"},"content":" assertNotEquals(null, standardCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"currynia"},"content":" assertNotEquals(standardCommand, new ClearCommand());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"currynia"},"content":" assertNotEquals(standardCommand, new EditCommand(INDEX_SECOND_PERSON, DESC_AMY));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"currynia"},"content":" assertNotEquals(standardCommand, new EditCommand(INDEX_FIRST_PERSON, DESC_BOB));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"currynia":23,"-":176}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SwaminathanViswa"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", telegram\u003d\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SwaminathanViswa"},"content":" + editPersonDescriptor.getTelegram().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Incogdino"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", github\u003d\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Incogdino"},"content":" + editPersonDescriptor.getGithub().orElse(null) + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":2,"Incogdino":2,"-":69}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB + TAG_DESC_FRIEND + GITHUB_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SwaminathanViswa"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SwaminathanViswa"},"content":" NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB + TAG_DESC_FRIEND + GITHUB_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SwaminathanViswa"},"content":" // multiple telegram IDs","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, TELEGRAM_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SwaminathanViswa"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"SwaminathanViswa"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_AMY + TELEGRAM_DESC_AMY","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Incogdino"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_GITHUB,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SwaminathanViswa"},"content":" PREFIX_EMAIL, PREFIX_PHONE, PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_AMY + TELEGRAM_DESC_AMY + GITHUB_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"SwaminathanViswa"},"content":" + VALID_ADDRESS_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"SwaminathanViswa"},"content":" + VALID_ADDRESS_BOB + TELEGRAM_DESC_BOB,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"SwaminathanViswa"},"content":" + TAG_DESC_FRIEND + GITHUB_DESC_BOB, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + INVALID_TAG_DESC + VALID_TAG_FRIEND + GITHUB_DESC_BOB, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"SwaminathanViswa"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"SwaminathanViswa"},"content":" + TELEGRAM_DESC_BOB + GITHUB_DESC_BOB, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"SwaminathanViswa"},"content":" + ADDRESS_DESC_BOB + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + GITHUB_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":36,"Incogdino":4,"-":176}},{"path":"src/test/java/seedu/address/logic/parser/AddGradeCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ASSIGNMENT_DESC_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SCORE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":"public class AddGradeCommandParserTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"currynia"},"content":" private final AddGradeCommandParser parser \u003d new AddGradeCommandParser();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":" public void parse_allFieldsSpecified_success() throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"currynia"},"content":" String userInput \u003d NAME_DESC_AMY + ASSIGNMENT_DESC_ONE + SCORE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":" AddGradeCommand expectedCommand \u003d new AddGradeCommand(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":" VALID_NAME_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"currynia"},"content":" VALID_SCORE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" VALID_ASSIGNMENT_ONE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"currynia"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"currynia":29}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ASSIGNMENT_DESC_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SCORE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"currynia"},"content":"import seedu.address.logic.commands.AddGradeCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DesSnowy"},"content":" DeleteCommand.COMMAND_WORD + NAME_DESC_AMY);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DesSnowy"},"content":" assertEquals(new DeleteCommand(new Name(VALID_NAME_AMY)), command);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"currynia"},"content":" public void parseCommand_addGrade() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"currynia"},"content":" String arguments \u003d NAME_DESC_AMY + ASSIGNMENT_DESC_ONE + SCORE_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"currynia"},"content":" AddGradeCommand command \u003d (AddGradeCommand) parser.parseCommand(AddGradeCommand.COMMAND_WORD + arguments);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"currynia"},"content":" assertEquals(command, new AddGradeCommand(VALID_NAME_AMY, VALID_SCORE, VALID_ASSIGNMENT_ONE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"DesSnowy":6,"currynia":11,"-":99}},{"path":"src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DesSnowy"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DesSnowy"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class DeleteCommandParserTest {","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DesSnowy"},"content":" assertParseSuccess(parser, NAME_DESC_AMY, new DeleteCommand(new Name(VALID_NAME_AMY)));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DesSnowy"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DesSnowy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DesSnowy"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DesSnowy"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DesSnowy"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"DesSnowy":10,"-":29}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"SwaminathanViswa"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + TELEGRAM_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SwaminathanViswa"},"content":" + TAG_DESC_FRIEND + GITHUB_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"SwaminathanViswa"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(VALID_GITHUB_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":7,"Incogdino":2,"-":206}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SwaminathanViswa"},"content":" private static final String INVALID_TELEGRAM \u003d \" \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Incogdino"},"content":" private static final String INVALID_GITHUB \u003d \"James123-;?\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" private static final String VALID_TELEGRAM \u003d \"@viswa\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Incogdino"},"content":" private static final String VALID_GITHUB \u003d \"Amy-123\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"currynia"},"content":" public void parseAssignment_removeTrailingSpaces() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"currynia"},"content":" String testString \u003d \"Ex01 \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"currynia"},"content":" String expectedString \u003d testString.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"currynia"},"content":" assertEquals(ParserUtil.parseAssignmentName(testString), expectedString);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"currynia"},"content":" public void parseScore_parsesCorrectScore() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"currynia"},"content":" String testString \u003d \"10.00\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"currynia"},"content":" Float expected \u003d 10f;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"currynia"},"content":" assertEquals(ParserUtil.parseScore(testString), expected);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"SwaminathanViswa"},"content":" public void parseTelegram_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTelegram((String) null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"SwaminathanViswa"},"content":" public void parseTelegram_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTelegram(INVALID_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"SwaminathanViswa"},"content":" public void parseTelegram_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"SwaminathanViswa"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(VALID_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"SwaminathanViswa"},"content":" public void parseTelegram_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"SwaminathanViswa"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_TELEGRAM + WHITESPACE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"SwaminathanViswa"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(addressWithWhitespace));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Incogdino"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"Incogdino"},"content":" public void parseGithub_withInvalidUsername_throwsParseException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Incogdino"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseGithub(INVALID_GITHUB));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":25,"currynia":15,"Incogdino":6,"-":196}},{"path":"src/test/java/seedu/address/model/assignment/AssignmentTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"currynia"},"content":"package seedu.address.model.assignment;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"currynia"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"currynia"},"content":"public class AssignmentTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"currynia"},"content":" private final Assignment assignment \u003d new Assignment(VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"currynia"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"currynia"},"content":" String expected \u003d \"Assignment:\" + VALID_ASSIGNMENT_ONE + \" \" + VALID_SCORE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"currynia"},"content":" assertEquals(expected, assignment.toString());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"currynia"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"currynia":17}},{"path":"src/test/java/seedu/address/model/person/GithubTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Incogdino"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Incogdino"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Incogdino"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Incogdino"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"public class GithubTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Incogdino"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Incogdino"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Incogdino"},"content":" assertThrows(NullPointerException.class, () -\u003e new Github(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Incogdino"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Incogdino"},"content":" public void constructor_invalidGithub_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Incogdino"},"content":" String emptyUsername \u003d \"\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Incogdino"},"content":" String usernameWithWhitespaces \u003d \"john asd\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Incogdino"},"content":" String usernameWithRestrictedSpecialCharacters \u003d \"john@asd\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Incogdino"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Github(emptyUsername));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Incogdino"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Github(usernameWithWhitespaces));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Incogdino"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Github(usernameWithRestrictedSpecialCharacters));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Incogdino"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Incogdino"},"content":" public void isValidUsername() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Incogdino"},"content":" // null username","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Incogdino"},"content":" assertThrows(NullPointerException.class, () -\u003e Github.isValidGithubUsername(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Incogdino"},"content":" // invalid username","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\"\")); // empty string","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\" \")); // spaces only","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\"-John\")); // Starts with hypen only","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\"John-\")); // Ends with hypen only","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\"-John-Doe\")); // Starts with hypen and hyphen in between","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\"John--Doe\")); // consecutive hypens only","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\"-\")); // hypen only","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Incogdino"},"content":" // long username (\u003e39 characters)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\"JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ-beepo\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\"@\")); // special character only","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Incogdino"},"content":" assertFalse(Github.isValidGithubUsername(\"John Doe\")); // whitespace between name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Incogdino"},"content":" // valid username","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Incogdino"},"content":" assertTrue(Github.isValidGithubUsername(\"John-Doe\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Incogdino"},"content":" assertTrue(Github.isValidGithubUsername(\"J\")); // one character","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Incogdino"},"content":" assertTrue(Github.isValidGithubUsername(\"JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ-beep\")); // long username","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Incogdino"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Incogdino"},"content":" public void equals() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Incogdino"},"content":" Github github \u003d new Github(\"Valid-Username\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Incogdino"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Incogdino"},"content":" assertTrue(github.equals(new Github(\"Valid-Username\")));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Incogdino"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Incogdino"},"content":" assertTrue(github.equals(github));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Incogdino"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Incogdino"},"content":" assertFalse(github.equals(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Incogdino"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Incogdino"},"content":" assertFalse(github.equals(5.0f));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Incogdino"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Incogdino"},"content":" assertFalse(github.equals(new Github(\"Other-Valid-Username\")));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Incogdino"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Incogdino":68}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" .withAddress(VALID_ADDRESS_BOB).withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"currynia"},"content":" assertEquals(ALICE, aliceCopy);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"currynia"},"content":" assertEquals(ALICE, ALICE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"currynia"},"content":" assertNotEquals(null, ALICE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"currynia"},"content":" assertNotEquals(5, ALICE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, BOB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"SwaminathanViswa"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SwaminathanViswa"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Incogdino"},"content":" // different GitHub account -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Incogdino"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withGithub(VALID_GITHUB_BOB).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"currynia"},"content":" assertNotEquals(ALICE, editedAlice);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"SwaminathanViswa"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"SwaminathanViswa"},"content":" + \", telegram\u003d\" + ALICE.getTelegram() + \", tags\u003d\" + ALICE.getTags()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"currynia"},"content":" + \", github\u003d\" + ALICE.getGithub()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"currynia"},"content":" + \", assignment\u003d\" + ALICE.getAssignment() + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":7,"currynia":15,"Incogdino":4,"-":88}},{"path":"src/test/java/seedu/address/model/person/TelegramTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"SwaminathanViswa"},"content":"package seedu.address.model.person;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"SwaminathanViswa"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"SwaminathanViswa"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"SwaminathanViswa"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":"public class TelegramTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"SwaminathanViswa"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(NullPointerException.class, () -\u003e new Telegram(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"SwaminathanViswa"},"content":" public void constructor_invalidTelegram_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":" String invalidTelegram \u003d \"\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Telegram(invalidTelegram));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":" public void isValidTelegram() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"SwaminathanViswa"},"content":" // null address","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(NullPointerException.class, () -\u003e Telegram.isValidTelegram(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"SwaminathanViswa"},"content":" // invalid addresses","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(Telegram.isValidTelegram(\"\")); // empty string","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(Telegram.isValidTelegram(\" \")); // spaces only","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" // valid addresses","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(Telegram.isValidTelegram(\"Blk 456, Den Road, #01-355\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(Telegram.isValidTelegram(\"-\")); // one character","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(Telegram.isValidTelegram(\"Leng Inc; 1234 Market St; San Francisco CA 2349879; USA\")); // long address","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"SwaminathanViswa"},"content":" public void equals() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"SwaminathanViswa"},"content":" Telegram telegram \u003d new Telegram(\"Valid Telegram\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(telegram.equals(new Telegram(\"Valid Telegram\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SwaminathanViswa"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":" assertTrue(telegram.equals(telegram));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"SwaminathanViswa"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(telegram.equals(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SwaminathanViswa"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(telegram.equals(5.0f));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SwaminathanViswa"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SwaminathanViswa"},"content":" assertFalse(telegram.equals(new Telegram(\"Other Valid Telegram\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SwaminathanViswa"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":56}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ASSIGNMENT_ONE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"currynia"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SCORE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"currynia"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"currynia"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"SwaminathanViswa"},"content":" private static final String INVALID_TELEGRAM \u003d \" \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Incogdino"},"content":" private static final String INVALID_GITHUB \u003d \"James123-;?\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" private static final String VALID_TELEGRAM \u003d BENSON.getTelegram().toString();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Incogdino"},"content":" private static final String VALID_GITHUB \u003d BENSON.getGithub().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":" Person defaultPerson \u003d new PersonBuilder().buildWithAssignment();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"currynia"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(defaultPerson);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"currynia"},"content":" assertEquals(defaultPerson, person.toModelType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"currynia"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"currynia"},"content":" public void toModelType_nullGithub_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"currynia"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, null, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"currynia"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Github.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"currynia"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"currynia"},"content":" INVALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"currynia"},"content":" null, VALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TELEGRAM,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"currynia"},"content":" invalidTags, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"SwaminathanViswa"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"SwaminathanViswa"},"content":" public void toModelType_invalidTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"SwaminathanViswa"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"currynia"},"content":" VALID_ADDRESS, INVALID_TELEGRAM, VALID_TAGS, VALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"SwaminathanViswa"},"content":" String expectedMessage \u003d Telegram.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"SwaminathanViswa"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Incogdino"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Incogdino"},"content":" public void toModelType_invalidGithubUsername_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Incogdino"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"SwaminathanViswa"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TELEGRAM, VALID_TAGS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"currynia"},"content":" INVALID_GITHUB, VALID_ASSIGNMENT_ONE, VALID_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Incogdino"},"content":" String expectedMessage \u003d Github.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Incogdino"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":21,"currynia":26,"Incogdino":10,"-":99}},{"path":"src/test/java/seedu/address/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.HOON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.IDA;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void readAddressBook_invalidAndValidPersonAddressBook_throwDataLoadingException() {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidPersonAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"currynia"},"content":" System.out.println(original);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" original.addPerson(HOON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" original.removePerson(ALICE);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" original.addPerson(IDA);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"currynia":1,"-":109}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"SwaminathanViswa"},"content":" descriptor.setTelegram(person.getTelegram());","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Incogdino"},"content":" descriptor.setGithub(person.getGithub());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"SwaminathanViswa"},"content":" * Sets the {@code Telegram} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SwaminathanViswa"},"content":" public EditPersonDescriptorBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"SwaminathanViswa"},"content":" descriptor.setTelegram(new Telegram(telegram));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"SwaminathanViswa"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Incogdino"},"content":" * Sets the {@code GitHub} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Incogdino"},"content":" public EditPersonDescriptorBuilder withGithub(String username) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Incogdino"},"content":" descriptor.setGithub(new Github(username));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Incogdino"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":10,"Incogdino":10,"-":87}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"currynia"},"content":"import seedu.address.model.assignment.Assignment;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Incogdino"},"content":"import seedu.address.model.person.Github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"SwaminathanViswa"},"content":"import seedu.address.model.person.Telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"currynia"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"@viswa\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Incogdino"},"content":" public static final String DEFAULT_GITHUB \u003d \"Amy\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"currynia"},"content":" public static final String DEFAULT_ASSIGNMENT_NAME \u003d \"Ex01\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"currynia"},"content":" public static final Float DEFAULT_ASSIGNMENT_SCORE \u003d 0f;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"SwaminathanViswa"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Incogdino"},"content":" private Github github;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"currynia"},"content":" private Assignment assignment;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"currynia"},"content":" telegram \u003d new Telegram(DEFAULT_TELEGRAM);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Incogdino"},"content":" github \u003d new Github(DEFAULT_GITHUB);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"currynia"},"content":" assignment \u003d new Assignment(DEFAULT_ASSIGNMENT_NAME, DEFAULT_ASSIGNMENT_SCORE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SwaminathanViswa"},"content":" telegram \u003d personToCopy.getTelegram();","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Incogdino"},"content":" github \u003d personToCopy.getGithub();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"currynia"},"content":" assignment \u003d personToCopy.getAssignment();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"SwaminathanViswa"},"content":" /**","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"SwaminathanViswa"},"content":" * Sets the {@code Telegram} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"SwaminathanViswa"},"content":" */","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"SwaminathanViswa"},"content":" public PersonBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"SwaminathanViswa"},"content":" this.telegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"SwaminathanViswa"},"content":" return this;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"SwaminathanViswa"},"content":" }","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Incogdino"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Incogdino"},"content":" * Sets the {@code GitHub} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Incogdino"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Incogdino"},"content":" public PersonBuilder withGithub(String username) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Incogdino"},"content":" this.github \u003d new Github(username);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Incogdino"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Incogdino"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"currynia"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"currynia"},"content":" * Sets the {@code Assignment} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"currynia"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"currynia"},"content":" public PersonBuilder witAssignment(String assignment, Float score) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"currynia"},"content":" this.assignment \u003d new Assignment(assignment, score);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"currynia"},"content":" return this;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"currynia"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"SwaminathanViswa"},"content":" return new Person(name, phone, email, address, telegram, tags, github);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"currynia"},"content":" public Person buildWithAssignment() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"currynia"},"content":" return new Person(name, phone, email, address, telegram, tags, github, assignment);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":12,"currynia":18,"Incogdino":13,"-":97}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_GITHUB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" sb.append(PREFIX_TELEGRAM + person.getTelegram().value + \" \");","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Incogdino"},"content":" sb.append(PREFIX_GITHUB + person.getGithub().username + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SwaminathanViswa"},"content":" descriptor.getTelegram().ifPresent(telegram -\u003e sb.append(PREFIX_TELEGRAM).append(telegram.value).append(\" \"));","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Incogdino"},"content":" sb.append(PREFIX_TAG).append(\" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Incogdino"},"content":" descriptor.getGithub().ifPresent(github -\u003e sb.append(PREFIX_GITHUB).append(github.username).append(\" \"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Incogdino"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":4,"Incogdino":5,"-":61}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Incogdino"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_GITHUB_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"SwaminathanViswa"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"SwaminathanViswa"},"content":"","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Alice\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Incogdino"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Incogdino"},"content":" .withGithub(\"Alice\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"currynia"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Benson\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Incogdino"},"content":" .withTags(\"owesMoney\", \"friends\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Incogdino"},"content":" .withGithub(\"Benson\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Carl\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Carl\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"cornelia@example.com\")","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"SwaminathanViswa"},"content":" .withAddress(\"10th street\").withTelegram(\"@Daniel\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"SwaminathanViswa"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Incogdino"},"content":" .withGithub(\"Daniel\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Elle\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Elle\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Fiona\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Fiona\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@George\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"George\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Hoon\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Hoon\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"SwaminathanViswa"},"content":" .withTelegram(\"@Ida\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"SwaminathanViswa"},"content":" .withGithub(\"Ida\").build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"SwaminathanViswa"},"content":" .withTags(VALID_TAG_FRIEND).withGithub(VALID_GITHUB_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"SwaminathanViswa"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"SwaminathanViswa"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).withGithub(VALID_GITHUB_BOB).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"currynia"},"content":" private TypicalPersons() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"currynia"},"content":" } // prevents instantiation","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"SwaminathanViswa":30,"currynia":3,"Incogdino":7,"-":62}}] diff --git a/AY2425S1-CS2103T-T11-2_tp_master/commits.json b/AY2425S1-CS2103T-T11-2_tp_master/commits.json index b6c01ac2..46412483 100644 --- a/AY2425S1-CS2103T-T11-2_tp_master/commits.json +++ b/AY2425S1-CS2103T-T11-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"SwaminathanViswa":[{"date":"2024-09-21","commitResults":[{"hash":"59cc0ac4f3dc4927bbe1a47660696ac21b549078","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}}]},{"date":"2024-09-28","commitResults":[{"hash":"6bdf2144b42f267d21d5d684cc8ca15723fc157a","isMergeCommit":false,"messageTitle":"Update Viswa\u0027s section on AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"6222aabf5182eb25bca4f452470850219a9c109e","isMergeCommit":false,"messageTitle":"Update Viswa\u0027s section on AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":6}}},{"hash":"e10a952360859bb79ea9bd84183cacddc0d15a66","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-AboutUs-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c9a331d8e27dce909d71a7ab1e556d7c77892219","isMergeCommit":true,"messageTitle":"Merge pull request #22 from SwaminathanViswa/branch-update-AboutUs-page","messageBody":"Update Viswa\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"18f9d47d026fabbfc01e64c044e11f46b5b0b3f2","isMergeCommit":false,"messageTitle":"Update title and repository name in yml file","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"65925df8cdf91bb50064de1ce7a113850f7e008b","isMergeCommit":false,"messageTitle":"Update User Stories section in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":10}}}]},{"date":"2024-09-29","commitResults":[{"hash":"ef82d2b33e03eb645da3463e64959f7d493d93ce","isMergeCommit":true,"messageTitle":"Merge pull request #44 from currynia/branch-update-readme","messageBody":"Update readme (A4)","fileTypesAndContributionMap":{}},{"hash":"7f6db7d922b4753f8040b6451e3d0d77a6c4fce9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2ac336d73a602347c456fc83469e963bb75cc35d","isMergeCommit":true,"messageTitle":"Merge pull request #42 from currynia/branch-update-dg","messageBody":"Update dg with use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"f6f4ad94f375a3bdc3eb31e9b68b124cac643289","isMergeCommit":false,"messageTitle":"Update placeholder text of AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"dfbbb7fb46dbcfa64020e1b317ce9afeb6651aa2","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":7}}},{"hash":"e9c97943d36999a8b864ed38dd18e0dd2e62e9a3","isMergeCommit":false,"messageTitle":"Delete placeholder text in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":11}}},{"hash":"6638631bfb1d28789bc30c1bddabcb7aa7c66eb9","isMergeCommit":true,"messageTitle":"Merge pull request #47 from SwaminathanViswa/branch-updateUserGuide","messageBody":"Update placeholder text of AB3","fileTypesAndContributionMap":{}},{"hash":"986772e9759b6742cc97fa81fac9fe3957f73a6a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateCodeCovBadge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"21f478be696a2053737ac18a59f089bbb0bd3a85","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Update-README.md","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bbe4e3d184ed0073e78c889476bb08f2db5a9a3f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updatePlaceholders","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5aa9cfec774f302b7ff4dc329ae7c227473bfbe2","isMergeCommit":true,"messageTitle":"Merge pull request #48 from Incogdino/branch-updateCodeCovBadge","messageBody":"Update CodeCov badge to point to team repo","fileTypesAndContributionMap":{}},{"hash":"1f8af4768cdffdb4e38f467baef56862890715d5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Update-README.md","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dd3f8db807a052e8dc0bc05876fc325f279eeb5f","isMergeCommit":true,"messageTitle":"Merge pull request #50 from SwaminathanViswa/branch-Update-README.md","messageBody":"Update README.md","fileTypesAndContributionMap":{}},{"hash":"b56d4b0a75bc63313c6e8ed8842efa8f3774262a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updatePlaceholders","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a29d736893089e62fdd3a25db4e1893687d2a9c1","isMergeCommit":true,"messageTitle":"Merge pull request #51 from SwaminathanViswa/branch-updatePlaceholders","messageBody":"Delete placeholder text in AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"bebca57b1ca54101cdc3a59083059b36466fba51","isMergeCommit":true,"messageTitle":"Merge pull request #54 from DesSnowy/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"746996a5007ee5670105a6699c32ad7a918c1ffd","isMergeCommit":false,"messageTitle":"Add Telegram as input and parse it","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":133,"deletions":16},"test-code":{"insertions":11,"deletions":9}}},{"hash":"d5be3a319cb51df1ba1b4092a556f456fd93dcfd","isMergeCommit":false,"messageTitle":"Edit checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":6},"test-code":{"insertions":21,"deletions":9}}},{"hash":"69a3db5c0aa05a16de01c6046da824d95e2dba83","isMergeCommit":false,"messageTitle":"Edit test cases to include telegram input","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":4},"test-code":{"insertions":94,"deletions":33}}}]},{"date":"2024-10-09","commitResults":[{"hash":"a863c3558d32dc8d9739d364e9b47d0c532c01ba","isMergeCommit":false,"messageTitle":"Edit test cases to comply with coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":62,"deletions":0}}},{"hash":"b8061add5510c2ed600b8a7971a254177389f050","isMergeCommit":false,"messageTitle":"Edit checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":5}}},{"hash":"f4b400deeaef6a172fcc72a057963bd5c8296a40","isMergeCommit":false,"messageTitle":"Add test cases to increase code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":10}}},{"hash":"6fb0e5e9c2ca073b6001d6106af755c6226c7398","isMergeCommit":false,"messageTitle":"Edit checkstlye errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":2}}},{"hash":"1926af2f301aacacf893d5903ac32b1055b47aee","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-TelegramInput","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/EditCommand.java\n#\tsrc/main/java/seedu/address/logic/parser/AddCommandParser.java\n#\tsrc/main/java/seedu/address/logic/parser/EditCommandParser.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/main/java/seedu/address/model/util/SampleDataUtil.java\n#\tsrc/main/java/seedu/address/storage/JsonAdaptedPerson.java\n#\tsrc/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json\n#\tsrc/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/logic/LogicManagerTest.java\n#\tsrc/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java\n#\tsrc/test/java/seedu/address/logic/parser/AddCommandParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/EditCommandParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/ParserUtilTest.java\n#\tsrc/test/java/seedu/address/model/person/PersonTest.java\n#\tsrc/test/java/seedu/address/storage/JsonAdaptedPersonTest.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"87eeb6f862a3d261920a471c062b189e4d952271","isMergeCommit":true,"messageTitle":"Merge pull request #58 from SwaminathanViswa/branch-update-TelegramInput","messageBody":"Add Telegram as input and parse it","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"89ef59bb23be226d03335bf8f8c20b16e2d560c8","isMergeCommit":true,"messageTitle":"Merge pull request #65 from tohjh/branch-add-grades-UI","messageBody":"Add grades UI and storage","fileTypesAndContributionMap":{}}]}],"DesSnowy":[{"date":"2024-09-28","commitResults":[{"hash":"fdc501af4258c0db605e9a0a426be8eb3b166694","isMergeCommit":false,"messageTitle":"Add Xiang Yu\u0027s section on aboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":4}}},{"hash":"815687676743b24260e3a117507548691a0fec7d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-aboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b8f99dc581a8a97313872177025eaec8b9f403da","isMergeCommit":true,"messageTitle":"Merge pull request #26 from tohjh/branch-aboutUs","messageBody":"Update Jia Han\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"646c88da96080082b325eba5db4e4f5cf4dbdb44","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-aboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7b621e0fd5b28cba7c6d1c6b011d3a8e4cde3906","isMergeCommit":true,"messageTitle":"Merge pull request #23 from DesSnowy/branch-aboutUs","messageBody":"Update Xiang Yu\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"99f6ebb8b918874194132e12e53088481e597c63","isMergeCommit":false,"messageTitle":"Add acknowledgements for source code","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"2932fe7c1f8a556008834c87a24a717512775693","isMergeCommit":true,"messageTitle":"Merge pull request #32 from SwaminathanViswa/branch-update-site-settings","messageBody":"Update title and repository name in yml file","fileTypesAndContributionMap":{}},{"hash":"e8d6300ffff64df4dcfbd9da5b357afc12a9e73f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UpdateReadme","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0f5a2b42b8df86ea6b93d812b939c71b4efe7161","isMergeCommit":false,"messageTitle":"Change title name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1077e9332c2e61779f9efb607bc920a3549434b5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-add-acknowledgement","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"340c6cc6d2d8970efc2b9b18cd718b2c578f06c4","isMergeCommit":true,"messageTitle":"Merge pull request #40 from DesSnowy/branch-add-acknowledgement","messageBody":"Add Acknowledgement of original source code","fileTypesAndContributionMap":{}},{"hash":"9db0e582f9e77d8ec95a0e8bb07b638f009137ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UpdateReadme","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"87c8d21853b0ae4d1aba13180f09bd6f8bb822de","isMergeCommit":true,"messageTitle":"Merge pull request #41 from Incogdino/branch-updateGithubActionsBadge","messageBody":"Update Github Actions build status badge to reflect team repo badge","fileTypesAndContributionMap":{}},{"hash":"884695768fe56ec629ac5bda7cee96ae5405fc3f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateDevGuideNonFunctionalRequirements","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"48eee677f5a39b7df636789be2b2ec339e19ba63","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c1094747dde2b700b0da8815fe957523e2e7d7fe","isMergeCommit":true,"messageTitle":"Merge pull request #39 from Incogdino/branch-updateDevGuideNonFunctionalRequirements","messageBody":"Add non functional requirements for developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-09-29","commitResults":[{"hash":"14c2eebae5de050a70dad33d91f5e66608551866","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-editDeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"92350f62192d237e16f379e445228b147e625b51","isMergeCommit":true,"messageTitle":"Merge pull request #43 from SwaminathanViswa/branch-editDeveloperGuide","messageBody":"Update User Stories section in Developer Guide","fileTypesAndContributionMap":{}},{"hash":"29adfb0cbe89842ab5a3b508bb18be6e411c2018","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AddGlossary","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2831aefa974ca79dad345eb476f1fcda070d4fb4","isMergeCommit":true,"messageTitle":"Merge pull request #38 from tohjh/branch-AddGlossary","messageBody":"Add glossary to developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"7d4a22d1013fc895ab1e1d5505d03dadc740a927","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into switch-docs-to-markbind","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d1353c0c8912d0f9c7f29175b2b94aaaa8b3ce8f","isMergeCommit":false,"messageTitle":"Update site configs to use KonTActs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"5acbb106010ece51beade098672ea070b5d8a03b","isMergeCommit":false,"messageTitle":"Clean up merge commit","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}},{"hash":"9c7d246e32bd2c9a0e00fc97ad480cdf1e6a1478","isMergeCommit":false,"messageTitle":"Fix TOC error in DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":3}}}]},{"date":"2024-10-08","commitResults":[{"hash":"13142a8e2d938e46058559240c8b254c18225a77","isMergeCommit":false,"messageTitle":"Change delete to use name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":17},"test-code":{"insertions":41,"deletions":25}}},{"hash":"2bc97d8d680740d1719f3a5f7ad879fef94a125d","isMergeCommit":false,"messageTitle":"Fix checkstlye for main","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"29f329ce851b82b89a65caaafb1288062dac6b3a","isMergeCommit":false,"messageTitle":"Fix checkstyle for test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":4}}}]},{"date":"2024-10-09","commitResults":[{"hash":"ecf6be476ed4b2b209b14148e63ff7e0b0085e8c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateDeleteForName","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a7c878ea6460af0b850ce0154fc8a809a6489ee2","isMergeCommit":false,"messageTitle":"Add test case for code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":1}}},{"hash":"e3be61278a03e15470a7de42edb2dec263251495","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-updateDeleteForName\u0027 of github.com:DesSnowy/tp into branch-updateDeleteForName","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4edaac8e55c5426fc2806703b90e61a1e02f388f","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"a95f58b2e97f9136121ee74ac0aa0d01a825ed40","isMergeCommit":true,"messageTitle":"Merge pull request #61 from DesSnowy/branch-updateDeleteForName","messageBody":"Update delete command to reference NAME","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"a15bb98f3489fa0eb6d5fdf1d7189dfbcea72755","isMergeCommit":true,"messageTitle":"Merge pull request #69 from Incogdino/branch-addGuiForGitHubField","messageBody":"Add GitHub field to UI","fileTypesAndContributionMap":{}}]}],"currynia":[{"date":"2024-09-28","commitResults":[{"hash":"cc1d41e596f695432e74711f0db7085ad1029bcf","isMergeCommit":false,"messageTitle":"Add Wen Rui\u0027s about","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":65,"deletions":13}}},{"hash":"1d675ec283255f9e1770ec20339c1a617ae0f1b8","isMergeCommit":false,"messageTitle":"Update about us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"e9978b2bae22530cac46ba8808f2a06e5dbb880e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fcf00ac86233b25e8333d5f10d1615032cee1c78","isMergeCommit":true,"messageTitle":"Merge pull request #21 from currynia/branch-update-AboutUs","messageBody":"Update Wen Rui\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"8790a0fe882bad320650489dc968db1a25464131","isMergeCommit":true,"messageTitle":"Merge pull request #24 from Incogdino/branch-updateAboutUs","messageBody":"Update Javier\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"6965eb0bbdffddd0a2aa4d50ab378d815119d0ab","isMergeCommit":false,"messageTitle":"Update dg with use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":370,"deletions":74}}}]},{"date":"2024-09-29","commitResults":[{"hash":"7839a77ed251afb8c36dfa2d2ccad365a89d2f6b","isMergeCommit":false,"messageTitle":"Update use cases format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":231,"deletions":212}}},{"hash":"00b15a222c11044999792a782c8769b439618edc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-update-dg\u0027 of https://github.com/currynia/tp into branch-update-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"58cf25015124784632a457b2f5a277698005eac3","isMergeCommit":false,"messageTitle":"Update readme (A4)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}}]},{"date":"2024-10-07","commitResults":[{"hash":"bbb2a2d06a47b6822147f865d724bf67dd4e94d4","isMergeCommit":false,"messageTitle":"Add function to add grades","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":224,"deletions":43}}}]},{"date":"2024-10-09","commitResults":[{"hash":"c4a3c5b95ac00d62fc776c7257f8418f7381bee7","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":23}}},{"hash":"f86aca7228310129303b5d4c2a5994d7313b0cf1","isMergeCommit":false,"messageTitle":"Fix PersonTest test case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":13,"deletions":11}}},{"hash":"83925785d86fa6f60517d9cdf662048f4702509d","isMergeCommit":false,"messageTitle":"Update test cases for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":61},"test-code":{"insertions":121,"deletions":4}}},{"hash":"4fa9e45c3be222fd969a5db1c171ba2594d66108","isMergeCommit":false,"messageTitle":"Fix code style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":3}}},{"hash":"8f2acd9376af451b112e78fc6dbc988978528a92","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-T11-2/tp into branch-add-AddGradeCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5bb06483a4ff9f0bcfd12518e524ab4127f2e879","isMergeCommit":false,"messageTitle":"Fix previous commit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":12},"test-code":{"insertions":12,"deletions":12}}},{"hash":"ac9def93385cb1d4bd9f88266714b7fcc44a0721","isMergeCommit":true,"messageTitle":"Merge pull request #60 from currynia/branch-add-AddGradeCommand","messageBody":"Add input and parsing of adding grades","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"85ed9671b56b0366f42cff6b0d159e71a3e942c4","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":12},"test-code":{"insertions":51,"deletions":26}}},{"hash":"b4ea03423a987f328ece7b8a202e2827d84ea1c2","isMergeCommit":false,"messageTitle":"Increase test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":53},"test-code":{"insertions":31,"deletions":8}}},{"hash":"e24e9ed40572705137aa33e3c668be527ef4cf4a","isMergeCommit":false,"messageTitle":"Fix style from previous commit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"c067faa105e7e6d74acad61f493cb81e552d1df6","isMergeCommit":false,"messageTitle":"Remove unused getters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":36}}}]}],"Incogdino":[{"date":"2024-09-28","commitResults":[{"hash":"d2aa1bd4698f7f20a40c5bc37a789488ef77f0c0","isMergeCommit":false,"messageTitle":"Add Javier\u0027s about information","messageBody":"Detailed description of role and responsibility played by Javier\nhave been added to the AboutUs page.\n","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":5}}},{"hash":"031f6e189cff2b63ec90c447f9dbdd146cdeabaa","isMergeCommit":false,"messageTitle":"Add Javier\u0027s about information","messageBody":"Detailed description of role and responsibility played by Javier\nhave been added to the AboutUs page.\n","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":10}}},{"hash":"2f2812422c429b980dafcbd084d1e9dbcbc7ae28","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateAboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"af497b7b9f90537ea690e1feb105b9cc0eaf1967","isMergeCommit":false,"messageTitle":"Add non functional requirements for developer guide","messageBody":"Non functional requirement specify what the system should do and\nthe constraints under which the system is developed and operated.\n","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":5}}},{"hash":"b983d029f7afe4a690b8aeb9b0e752f6fe0e7401","isMergeCommit":false,"messageTitle":"Update Github Actions build status badge to reflect team repo badge","messageBody":"Github Actions build status badge was previously linked to the\noriginal repo which is used for educational purpose. It now\npoints to our team\u0027s repo instead.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}},{"hash":"52d6f41c0ffa0d6f11273d01090a29afc5b32e03","isMergeCommit":false,"messageTitle":"Update Github Actions build status badge to reflect team repo badge","messageBody":"Github Actions build status badge was previously linked to the\noriginal repo which is used for educational purpose. It now\npoints to our team\u0027s repo instead.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"76553a037d79369e64997f87d1a8b496770c681f","isMergeCommit":false,"messageTitle":"Update Github Actions build status badge to reflect team repo badge","messageBody":"Github Actions build status badge was previously linked to the\noriginal repo which is used for educational purpose. It now\npoints to our team\u0027s repo instead.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"a6ecace2da7f60ac405739641a14e76f83b9709b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AddGlossary","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b261dc57c8cc208704db1bc7b61310087eb855e6","isMergeCommit":false,"messageTitle":"Add full stops to the end of non functional requirements sentences","messageBody":"Sentences previously lacked a full stop at the end of the sentence.\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"ad0132191a9545a7d43ddb81d6f3c31f2c4ab7d0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateGithubActionsBadge","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"0aa17b717b7dce1b965716b7e980a7c3b9e3a598","isMergeCommit":false,"messageTitle":"Update CodeCov badge to point to team repo","messageBody":"CodeCov badge was initially pointing to the address book repo. It have\nbeen updated to the project team repo.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-07","commitResults":[{"hash":"49fa56e56820790eedb2f28bd3aea687beabf507","isMergeCommit":false,"messageTitle":"Update \"add\" feature to take in GitHub username","messageBody":"GitHub username is recorded as part of identifying the contact of\na person in the addressbook. It is especially useful for CS2030S TA.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"f789f82665eac026dafd2853c561d80fbe14f969","isMergeCommit":false,"messageTitle":"Update \"add\" feature to take in GitHub username","messageBody":"GitHub username is recorded as part of identifying the contact of\na person in the addressbook. It is especially useful for CS2030S TA.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":136,"deletions":20}}}]},{"date":"2024-10-09","commitResults":[{"hash":"02cd6991385377fd3daa61be400bbb760e8c06f8","isMergeCommit":false,"messageTitle":"Update \"add\" feature to take in GitHub username","messageBody":"GitHub username is recorded as part of identifying the contact of\na person in the Addressbook. It is especially useful for CS2030S TA.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":9},"test-code":{"insertions":95,"deletions":39}}},{"hash":"0657496a3871f8506ae1d91348e25a700cab72ef","isMergeCommit":false,"messageTitle":"Add tests for \"add github\" feature","messageBody":"More test cases helps to handle edge cases as well as to test if\nexceptions work as expected with the proper error message and error\nhandling.\n","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}},{"hash":"a613ffe7a246d97a015fa1d92b7d0b1c776c5258","isMergeCommit":false,"messageTitle":"Add tests for \"add github\" feature","messageBody":"More test cases to test if the equals method returns false if the two\npersons with different github accounts are compared with the method.\n","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"b78e74f9550b694fbf721dcb7d5abb6b37c5b220","isMergeCommit":false,"messageTitle":"Add tests for \"add github\" feature","messageBody":"More test cases to test if the JsonAdaptedPerson throws an error if the\ngithub person username is of the wrong format.\n","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":1}}},{"hash":"488adf1c59ccc569d30ff2e1d28d75d9cb7dfa32","isMergeCommit":true,"messageTitle":"Merge pull request #59 from Incogdino/branch-addGithubAccountFeature","messageBody":"Branch add GitHub account feature","fileTypesAndContributionMap":{}},{"hash":"2da415fec1f952209f8d9e8c6f11c434d307707d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateDeleteForName","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"4caec0483b869bc2e2cb4bb6939500180ef60123","isMergeCommit":false,"messageTitle":"Add GitHub field to UI","messageBody":"GitHub account username was previously unviewable under the contact\ninside the AddressBook. It can now be retrieved and viewed as part\nof a contact information.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":5},"test-code":{"insertions":1,"deletions":1}}},{"hash":"a14dbe50e115cf78a3c4df0dbfd2093af46462ea","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"Checkstyle errors were causing Github Actions to fail due to errors\nin style of the code.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"08a0030c66010703f9e0069524de71872c23d341","isMergeCommit":false,"messageTitle":"Update success message for add command","messageBody":"Success message now includes details of GitHub username that is\nvisible to the user.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"cf9c903f54c1c7e231936773b5f991d7d3e56758","isMergeCommit":false,"messageTitle":"Update add command failure message","messageBody":"Failure message now includes details of how to specify the proper\nadd command feature with the GitHub field.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"402a19f13e70372ff33748f18db939f9d5520d7e","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"Checkstyle errors were causing Github Actions to fail due to errors\nin style of the code.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}}]}],"tohjh":[{"date":"2024-09-28","commitResults":[{"hash":"622659bb4c8ce6e258959065c9a97dc80396ad12","isMergeCommit":false,"messageTitle":"Add Jia Han AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"509dd241e711fe5915ab284f2b35922261f9cbf7","isMergeCommit":false,"messageTitle":"Update Jia Han AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"1fdd5e1ccd721f5e6c3d997a86481602b182408b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-aboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"03eef594cca5fb181f259d463d236a273676c201","isMergeCommit":false,"messageTitle":"Update README (A1)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"7ed3f4f8dbe2e4a18aea274f9f15d957e1217dda","isMergeCommit":false,"messageTitle":"Add glossary to developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":2}}},{"hash":"fc74a21151de23c5bde0c51707d2f0f5c52f59e7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateGithubActionsBadge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9817927fc088ab65ce6551150f1c79f4efedb3d9","isMergeCommit":false,"messageTitle":"Add fullstops for glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"b89eec4f8ec4a7154e34be3c1681ac7ced70c46d","isMergeCommit":true,"messageTitle":"Merge https://github.com/AY2425S1-CS2103T-T11-2/tp into branch-AddGlossary","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-09-29","commitResults":[{"hash":"5e2b9451364cf63b32fcd1940df4afc60343ad89","isMergeCommit":true,"messageTitle":"Merge https://github.com/AY2425S1-CS2103T-T11-2/tp into branch-AddGlossary","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4dfd77d6d973c4ae51d57fb54487cf23e68038dd","isMergeCommit":true,"messageTitle":"Add fullstop for glossary","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-08","commitResults":[{"hash":"b10f0af28436df58b2eaaf4305ec2c763e8b4a4a","isMergeCommit":false,"messageTitle":"Add storage and UI display for assignments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":78,"deletions":19}}}]},{"date":"2024-10-10","commitResults":[{"hash":"16bc38965cf4da64f3e64fe389ae096252729ebb","isMergeCommit":false,"messageTitle":"Fix test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"050eabb751a327ed98bcf4a6f7cc730b3e1e7f2c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-T11-2/tp into branch-add-grades-UI","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"SwaminathanViswa":{"docs":93,"functional-code":142,"test-code":220},"DesSnowy":{"docs":32,"functional-code":31,"test-code":47},"currynia":{"docs":418,"functional-code":285,"test-code":212},"Incogdino":{"docs":28,"functional-code":142,"test-code":69},"tohjh":{"docs":12,"functional-code":29,"test-code":0}},"authorContributionVariance":{"SwaminathanViswa":6163.2124,"DesSnowy":711.46326,"currynia":29059.016,"Incogdino":2421.9316,"tohjh":465.00946},"authorDisplayNameMap":{"SwaminathanViswa":"CS2103T-T11-2 SWAM..ISWA","DesSnowy":"CS2103T-T11-2 LAU ..G YU","currynia":"CS2103T-T11-2 TEE .. RUI","Incogdino":"CS2103T-T11-2 JAVI.. WEE","tohjh":"CS2103T-T11-2 TOH .. HAN"}} +{"authorDailyContributionsMap":{"SwaminathanViswa":[{"date":"2024-09-21","commitResults":[{"hash":"59cc0ac4f3dc4927bbe1a47660696ac21b549078","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}}]},{"date":"2024-09-28","commitResults":[{"hash":"6bdf2144b42f267d21d5d684cc8ca15723fc157a","isMergeCommit":false,"messageTitle":"Update Viswa\u0027s section on AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"6222aabf5182eb25bca4f452470850219a9c109e","isMergeCommit":false,"messageTitle":"Update Viswa\u0027s section on AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":52,"deletions":6}}},{"hash":"e10a952360859bb79ea9bd84183cacddc0d15a66","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-AboutUs-page","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c9a331d8e27dce909d71a7ab1e556d7c77892219","isMergeCommit":true,"messageTitle":"Merge pull request #22 from SwaminathanViswa/branch-update-AboutUs-page","messageBody":"Update Viswa\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"18f9d47d026fabbfc01e64c044e11f46b5b0b3f2","isMergeCommit":false,"messageTitle":"Update title and repository name in yml file","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":2}}},{"hash":"65925df8cdf91bb50064de1ce7a113850f7e008b","isMergeCommit":false,"messageTitle":"Update User Stories section in Developer Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":31,"deletions":10}}}]},{"date":"2024-09-29","commitResults":[{"hash":"ef82d2b33e03eb645da3463e64959f7d493d93ce","isMergeCommit":true,"messageTitle":"Merge pull request #44 from currynia/branch-update-readme","messageBody":"Update readme (A4)","fileTypesAndContributionMap":{}},{"hash":"7f6db7d922b4753f8040b6451e3d0d77a6c4fce9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2ac336d73a602347c456fc83469e963bb75cc35d","isMergeCommit":true,"messageTitle":"Merge pull request #42 from currynia/branch-update-dg","messageBody":"Update dg with use cases","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"f6f4ad94f375a3bdc3eb31e9b68b124cac643289","isMergeCommit":false,"messageTitle":"Update placeholder text of AB3","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"dfbbb7fb46dbcfa64020e1b317ce9afeb6651aa2","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":7}}},{"hash":"e9c97943d36999a8b864ed38dd18e0dd2e62e9a3","isMergeCommit":false,"messageTitle":"Delete placeholder text in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":11}}},{"hash":"6638631bfb1d28789bc30c1bddabcb7aa7c66eb9","isMergeCommit":true,"messageTitle":"Merge pull request #47 from SwaminathanViswa/branch-updateUserGuide","messageBody":"Update placeholder text of AB3","fileTypesAndContributionMap":{}},{"hash":"986772e9759b6742cc97fa81fac9fe3957f73a6a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateCodeCovBadge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"21f478be696a2053737ac18a59f089bbb0bd3a85","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Update-README.md","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"bbe4e3d184ed0073e78c889476bb08f2db5a9a3f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updatePlaceholders","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5aa9cfec774f302b7ff4dc329ae7c227473bfbe2","isMergeCommit":true,"messageTitle":"Merge pull request #48 from Incogdino/branch-updateCodeCovBadge","messageBody":"Update CodeCov badge to point to team repo","fileTypesAndContributionMap":{}},{"hash":"1f8af4768cdffdb4e38f467baef56862890715d5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-Update-README.md","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dd3f8db807a052e8dc0bc05876fc325f279eeb5f","isMergeCommit":true,"messageTitle":"Merge pull request #50 from SwaminathanViswa/branch-Update-README.md","messageBody":"Update README.md","fileTypesAndContributionMap":{}},{"hash":"b56d4b0a75bc63313c6e8ed8842efa8f3774262a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updatePlaceholders","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a29d736893089e62fdd3a25db4e1893687d2a9c1","isMergeCommit":true,"messageTitle":"Merge pull request #51 from SwaminathanViswa/branch-updatePlaceholders","messageBody":"Delete placeholder text in AboutUs.md","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"bebca57b1ca54101cdc3a59083059b36466fba51","isMergeCommit":true,"messageTitle":"Merge pull request #54 from DesSnowy/switch-docs-to-markbind","messageBody":"Switch docs to markbind","fileTypesAndContributionMap":{}}]},{"date":"2024-10-07","commitResults":[{"hash":"746996a5007ee5670105a6699c32ad7a918c1ffd","isMergeCommit":false,"messageTitle":"Add Telegram as input and parse it","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":133,"deletions":16},"test-code":{"insertions":11,"deletions":9}}},{"hash":"d5be3a319cb51df1ba1b4092a556f456fd93dcfd","isMergeCommit":false,"messageTitle":"Edit checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":6},"test-code":{"insertions":21,"deletions":9}}},{"hash":"69a3db5c0aa05a16de01c6046da824d95e2dba83","isMergeCommit":false,"messageTitle":"Edit test cases to include telegram input","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":4},"test-code":{"insertions":94,"deletions":33}}}]},{"date":"2024-10-09","commitResults":[{"hash":"a863c3558d32dc8d9739d364e9b47d0c532c01ba","isMergeCommit":false,"messageTitle":"Edit test cases to comply with coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":62,"deletions":0}}},{"hash":"b8061add5510c2ed600b8a7971a254177389f050","isMergeCommit":false,"messageTitle":"Edit checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":5}}},{"hash":"f4b400deeaef6a172fcc72a057963bd5c8296a40","isMergeCommit":false,"messageTitle":"Add test cases to increase code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":10}}},{"hash":"6fb0e5e9c2ca073b6001d6106af755c6226c7398","isMergeCommit":false,"messageTitle":"Edit checkstlye errors","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":10,"deletions":2}}},{"hash":"1926af2f301aacacf893d5903ac32b1055b47aee","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-TelegramInput","messageBody":"# Conflicts:\n#\tsrc/main/java/seedu/address/logic/commands/EditCommand.java\n#\tsrc/main/java/seedu/address/logic/parser/AddCommandParser.java\n#\tsrc/main/java/seedu/address/logic/parser/EditCommandParser.java\n#\tsrc/main/java/seedu/address/model/person/Person.java\n#\tsrc/main/java/seedu/address/model/util/SampleDataUtil.java\n#\tsrc/main/java/seedu/address/storage/JsonAdaptedPerson.java\n#\tsrc/test/data/JsonSerializableAddressBookTest/duplicatePersonAddressBook.json\n#\tsrc/test/data/JsonSerializableAddressBookTest/typicalPersonsAddressBook.json\n#\tsrc/test/java/seedu/address/logic/LogicManagerTest.java\n#\tsrc/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java\n#\tsrc/test/java/seedu/address/logic/parser/AddCommandParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/EditCommandParserTest.java\n#\tsrc/test/java/seedu/address/logic/parser/ParserUtilTest.java\n#\tsrc/test/java/seedu/address/model/person/PersonTest.java\n#\tsrc/test/java/seedu/address/storage/JsonAdaptedPersonTest.java\n#\tsrc/test/java/seedu/address/testutil/PersonBuilder.java\n#\tsrc/test/java/seedu/address/testutil/TypicalPersons.java\n","fileTypesAndContributionMap":{}},{"hash":"87eeb6f862a3d261920a471c062b189e4d952271","isMergeCommit":true,"messageTitle":"Merge pull request #58 from SwaminathanViswa/branch-update-TelegramInput","messageBody":"Add Telegram as input and parse it","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"89ef59bb23be226d03335bf8f8c20b16e2d560c8","isMergeCommit":true,"messageTitle":"Merge pull request #65 from tohjh/branch-add-grades-UI","messageBody":"Add grades UI and storage","fileTypesAndContributionMap":{}}]}],"DesSnowy":[{"date":"2024-09-28","commitResults":[{"hash":"fdc501af4258c0db605e9a0a426be8eb3b166694","isMergeCommit":false,"messageTitle":"Add Xiang Yu\u0027s section on aboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":51,"deletions":4}}},{"hash":"815687676743b24260e3a117507548691a0fec7d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-aboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b8f99dc581a8a97313872177025eaec8b9f403da","isMergeCommit":true,"messageTitle":"Merge pull request #26 from tohjh/branch-aboutUs","messageBody":"Update Jia Han\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"646c88da96080082b325eba5db4e4f5cf4dbdb44","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-aboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"7b621e0fd5b28cba7c6d1c6b011d3a8e4cde3906","isMergeCommit":true,"messageTitle":"Merge pull request #23 from DesSnowy/branch-aboutUs","messageBody":"Update Xiang Yu\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"99f6ebb8b918874194132e12e53088481e597c63","isMergeCommit":false,"messageTitle":"Add acknowledgements for source code","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":0}}},{"hash":"2932fe7c1f8a556008834c87a24a717512775693","isMergeCommit":true,"messageTitle":"Merge pull request #32 from SwaminathanViswa/branch-update-site-settings","messageBody":"Update title and repository name in yml file","fileTypesAndContributionMap":{}},{"hash":"e8d6300ffff64df4dcfbd9da5b357afc12a9e73f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UpdateReadme","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"0f5a2b42b8df86ea6b93d812b939c71b4efe7161","isMergeCommit":false,"messageTitle":"Change title name","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"1077e9332c2e61779f9efb607bc920a3549434b5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-add-acknowledgement","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"340c6cc6d2d8970efc2b9b18cd718b2c578f06c4","isMergeCommit":true,"messageTitle":"Merge pull request #40 from DesSnowy/branch-add-acknowledgement","messageBody":"Add Acknowledgement of original source code","fileTypesAndContributionMap":{}},{"hash":"9db0e582f9e77d8ec95a0e8bb07b638f009137ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-UpdateReadme","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"87c8d21853b0ae4d1aba13180f09bd6f8bb822de","isMergeCommit":true,"messageTitle":"Merge pull request #41 from Incogdino/branch-updateGithubActionsBadge","messageBody":"Update Github Actions build status badge to reflect team repo badge","fileTypesAndContributionMap":{}},{"hash":"884695768fe56ec629ac5bda7cee96ae5405fc3f","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateDevGuideNonFunctionalRequirements","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"48eee677f5a39b7df636789be2b2ec339e19ba63","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c1094747dde2b700b0da8815fe957523e2e7d7fe","isMergeCommit":true,"messageTitle":"Merge pull request #39 from Incogdino/branch-updateDevGuideNonFunctionalRequirements","messageBody":"Add non functional requirements for developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-09-29","commitResults":[{"hash":"14c2eebae5de050a70dad33d91f5e66608551866","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-editDeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"92350f62192d237e16f379e445228b147e625b51","isMergeCommit":true,"messageTitle":"Merge pull request #43 from SwaminathanViswa/branch-editDeveloperGuide","messageBody":"Update User Stories section in Developer Guide","fileTypesAndContributionMap":{}},{"hash":"29adfb0cbe89842ab5a3b508bb18be6e411c2018","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AddGlossary","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"2831aefa974ca79dad345eb476f1fcda070d4fb4","isMergeCommit":true,"messageTitle":"Merge pull request #38 from tohjh/branch-AddGlossary","messageBody":"Add glossary to developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"7d4a22d1013fc895ab1e1d5505d03dadc740a927","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into switch-docs-to-markbind","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d1353c0c8912d0f9c7f29175b2b94aaaa8b3ce8f","isMergeCommit":false,"messageTitle":"Update site configs to use KonTActs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"5acbb106010ece51beade098672ea070b5d8a03b","isMergeCommit":false,"messageTitle":"Clean up merge commit","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":2}}},{"hash":"9c7d246e32bd2c9a0e00fc97ad480cdf1e6a1478","isMergeCommit":false,"messageTitle":"Fix TOC error in DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":3}}}]},{"date":"2024-10-08","commitResults":[{"hash":"13142a8e2d938e46058559240c8b254c18225a77","isMergeCommit":false,"messageTitle":"Change delete to use name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":17},"test-code":{"insertions":41,"deletions":25}}},{"hash":"2bc97d8d680740d1719f3a5f7ad879fef94a125d","isMergeCommit":false,"messageTitle":"Fix checkstlye for main","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"29f329ce851b82b89a65caaafb1288062dac6b3a","isMergeCommit":false,"messageTitle":"Fix checkstyle for test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":4}}}]},{"date":"2024-10-09","commitResults":[{"hash":"ecf6be476ed4b2b209b14148e63ff7e0b0085e8c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateDeleteForName","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a7c878ea6460af0b850ce0154fc8a809a6489ee2","isMergeCommit":false,"messageTitle":"Add test case for code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":1}}},{"hash":"e3be61278a03e15470a7de42edb2dec263251495","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-updateDeleteForName\u0027 of github.com:DesSnowy/tp into branch-updateDeleteForName","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4edaac8e55c5426fc2806703b90e61a1e02f388f","isMergeCommit":false,"messageTitle":"Fix checkstyle error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":2,"deletions":2}}},{"hash":"a95f58b2e97f9136121ee74ac0aa0d01a825ed40","isMergeCommit":true,"messageTitle":"Merge pull request #61 from DesSnowy/branch-updateDeleteForName","messageBody":"Update delete command to reference NAME","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"a15bb98f3489fa0eb6d5fdf1d7189dfbcea72755","isMergeCommit":true,"messageTitle":"Merge pull request #69 from Incogdino/branch-addGuiForGitHubField","messageBody":"Add GitHub field to UI","fileTypesAndContributionMap":{}},{"hash":"da88aaeef78f08a2d4a752a7c8746ac256858397","isMergeCommit":false,"messageTitle":"Update message usage for DeleteCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":3}}},{"hash":"5544838c16ee4590fa773e4a9b333c34c850f89c","isMergeCommit":false,"messageTitle":"Fix typo in error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"b159a5f529ce0a2da2c32e6f7008fb87749efcc9","isMergeCommit":false,"messageTitle":"Fix styling in error message","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"0cbd2dd74c8e3b9bddd5e435f032da6dc9fb1567","isMergeCommit":true,"messageTitle":"Merge pull request #74 from DesSnowy/branch-updateDeleteUi","messageBody":"Update usage text for DeleteCommand","fileTypesAndContributionMap":{}}]}],"currynia":[{"date":"2024-09-28","commitResults":[{"hash":"cc1d41e596f695432e74711f0db7085ad1029bcf","isMergeCommit":false,"messageTitle":"Add Wen Rui\u0027s about","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":65,"deletions":13}}},{"hash":"1d675ec283255f9e1770ec20339c1a617ae0f1b8","isMergeCommit":false,"messageTitle":"Update about us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"e9978b2bae22530cac46ba8808f2a06e5dbb880e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-update-AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fcf00ac86233b25e8333d5f10d1615032cee1c78","isMergeCommit":true,"messageTitle":"Merge pull request #21 from currynia/branch-update-AboutUs","messageBody":"Update Wen Rui\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"8790a0fe882bad320650489dc968db1a25464131","isMergeCommit":true,"messageTitle":"Merge pull request #24 from Incogdino/branch-updateAboutUs","messageBody":"Update Javier\u0027s section on AboutUs page","fileTypesAndContributionMap":{}},{"hash":"6965eb0bbdffddd0a2aa4d50ab378d815119d0ab","isMergeCommit":false,"messageTitle":"Update dg with use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":370,"deletions":74}}}]},{"date":"2024-09-29","commitResults":[{"hash":"7839a77ed251afb8c36dfa2d2ccad365a89d2f6b","isMergeCommit":false,"messageTitle":"Update use cases format","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":231,"deletions":212}}},{"hash":"00b15a222c11044999792a782c8769b439618edc","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-update-dg\u0027 of https://github.com/currynia/tp into branch-update-dg","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"58cf25015124784632a457b2f5a277698005eac3","isMergeCommit":false,"messageTitle":"Update readme (A4)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}}]},{"date":"2024-10-07","commitResults":[{"hash":"bbb2a2d06a47b6822147f865d724bf67dd4e94d4","isMergeCommit":false,"messageTitle":"Add function to add grades","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":224,"deletions":43}}}]},{"date":"2024-10-09","commitResults":[{"hash":"c4a3c5b95ac00d62fc776c7257f8418f7381bee7","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":54,"deletions":23}}},{"hash":"f86aca7228310129303b5d4c2a5994d7313b0cf1","isMergeCommit":false,"messageTitle":"Fix PersonTest test case","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":0},"test-code":{"insertions":13,"deletions":11}}},{"hash":"83925785d86fa6f60517d9cdf662048f4702509d","isMergeCommit":false,"messageTitle":"Update test cases for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":58,"deletions":61},"test-code":{"insertions":121,"deletions":4}}},{"hash":"4fa9e45c3be222fd969a5db1c171ba2594d66108","isMergeCommit":false,"messageTitle":"Fix code style","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":3}}},{"hash":"8f2acd9376af451b112e78fc6dbc988978528a92","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-T11-2/tp into branch-add-AddGradeCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"5bb06483a4ff9f0bcfd12518e524ab4127f2e879","isMergeCommit":false,"messageTitle":"Fix previous commit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":28,"deletions":12},"test-code":{"insertions":12,"deletions":12}}},{"hash":"ac9def93385cb1d4bd9f88266714b7fcc44a0721","isMergeCommit":true,"messageTitle":"Merge pull request #60 from currynia/branch-add-AddGradeCommand","messageBody":"Add input and parsing of adding grades","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"85ed9671b56b0366f42cff6b0d159e71a3e942c4","isMergeCommit":false,"messageTitle":"Fix test cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":12},"test-code":{"insertions":51,"deletions":26}}},{"hash":"b4ea03423a987f328ece7b8a202e2827d84ea1c2","isMergeCommit":false,"messageTitle":"Increase test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":87,"deletions":53},"test-code":{"insertions":31,"deletions":8}}},{"hash":"e24e9ed40572705137aa33e3c668be527ef4cf4a","isMergeCommit":false,"messageTitle":"Fix style from previous commit","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1}}},{"hash":"c067faa105e7e6d74acad61f493cb81e552d1df6","isMergeCommit":false,"messageTitle":"Remove unused getters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":36}}}]}],"Incogdino":[{"date":"2024-09-28","commitResults":[{"hash":"d2aa1bd4698f7f20a40c5bc37a789488ef77f0c0","isMergeCommit":false,"messageTitle":"Add Javier\u0027s about information","messageBody":"Detailed description of role and responsibility played by Javier\nhave been added to the AboutUs page.\n","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":5}}},{"hash":"031f6e189cff2b63ec90c447f9dbdd146cdeabaa","isMergeCommit":false,"messageTitle":"Add Javier\u0027s about information","messageBody":"Detailed description of role and responsibility played by Javier\nhave been added to the AboutUs page.\n","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":10}}},{"hash":"2f2812422c429b980dafcbd084d1e9dbcbc7ae28","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateAboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"af497b7b9f90537ea690e1feb105b9cc0eaf1967","isMergeCommit":false,"messageTitle":"Add non functional requirements for developer guide","messageBody":"Non functional requirement specify what the system should do and\nthe constraints under which the system is developed and operated.\n","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":5}}},{"hash":"b983d029f7afe4a690b8aeb9b0e752f6fe0e7401","isMergeCommit":false,"messageTitle":"Update Github Actions build status badge to reflect team repo badge","messageBody":"Github Actions build status badge was previously linked to the\noriginal repo which is used for educational purpose. It now\npoints to our team\u0027s repo instead.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":2}}},{"hash":"52d6f41c0ffa0d6f11273d01090a29afc5b32e03","isMergeCommit":false,"messageTitle":"Update Github Actions build status badge to reflect team repo badge","messageBody":"Github Actions build status badge was previously linked to the\noriginal repo which is used for educational purpose. It now\npoints to our team\u0027s repo instead.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"76553a037d79369e64997f87d1a8b496770c681f","isMergeCommit":false,"messageTitle":"Update Github Actions build status badge to reflect team repo badge","messageBody":"Github Actions build status badge was previously linked to the\noriginal repo which is used for educational purpose. It now\npoints to our team\u0027s repo instead.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"a6ecace2da7f60ac405739641a14e76f83b9709b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-AddGlossary","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b261dc57c8cc208704db1bc7b61310087eb855e6","isMergeCommit":false,"messageTitle":"Add full stops to the end of non functional requirements sentences","messageBody":"Sentences previously lacked a full stop at the end of the sentence.\n","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"ad0132191a9545a7d43ddb81d6f3c31f2c4ab7d0","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateGithubActionsBadge","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"0aa17b717b7dce1b965716b7e980a7c3b9e3a598","isMergeCommit":false,"messageTitle":"Update CodeCov badge to point to team repo","messageBody":"CodeCov badge was initially pointing to the address book repo. It have\nbeen updated to the project team repo.\n","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-07","commitResults":[{"hash":"49fa56e56820790eedb2f28bd3aea687beabf507","isMergeCommit":false,"messageTitle":"Update \"add\" feature to take in GitHub username","messageBody":"GitHub username is recorded as part of identifying the contact of\na person in the addressbook. It is especially useful for CS2030S TA.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"f789f82665eac026dafd2853c561d80fbe14f969","isMergeCommit":false,"messageTitle":"Update \"add\" feature to take in GitHub username","messageBody":"GitHub username is recorded as part of identifying the contact of\na person in the addressbook. It is especially useful for CS2030S TA.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":136,"deletions":20}}}]},{"date":"2024-10-09","commitResults":[{"hash":"02cd6991385377fd3daa61be400bbb760e8c06f8","isMergeCommit":false,"messageTitle":"Update \"add\" feature to take in GitHub username","messageBody":"GitHub username is recorded as part of identifying the contact of\na person in the Addressbook. It is especially useful for CS2030S TA.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":9},"test-code":{"insertions":95,"deletions":39}}},{"hash":"0657496a3871f8506ae1d91348e25a700cab72ef","isMergeCommit":false,"messageTitle":"Add tests for \"add github\" feature","messageBody":"More test cases helps to handle edge cases as well as to test if\nexceptions work as expected with the proper error message and error\nhandling.\n","fileTypesAndContributionMap":{"test-code":{"insertions":7,"deletions":0}}},{"hash":"a613ffe7a246d97a015fa1d92b7d0b1c776c5258","isMergeCommit":false,"messageTitle":"Add tests for \"add github\" feature","messageBody":"More test cases to test if the equals method returns false if the two\npersons with different github accounts are compared with the method.\n","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"b78e74f9550b694fbf721dcb7d5abb6b37c5b220","isMergeCommit":false,"messageTitle":"Add tests for \"add github\" feature","messageBody":"More test cases to test if the JsonAdaptedPerson throws an error if the\ngithub person username is of the wrong format.\n","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":1}}},{"hash":"488adf1c59ccc569d30ff2e1d28d75d9cb7dfa32","isMergeCommit":true,"messageTitle":"Merge pull request #59 from Incogdino/branch-addGithubAccountFeature","messageBody":"Branch add GitHub account feature","fileTypesAndContributionMap":{}},{"hash":"2da415fec1f952209f8d9e8c6f11c434d307707d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateDeleteForName","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"4caec0483b869bc2e2cb4bb6939500180ef60123","isMergeCommit":false,"messageTitle":"Add GitHub field to UI","messageBody":"GitHub account username was previously unviewable under the contact\ninside the AddressBook. It can now be retrieved and viewed as part\nof a contact information.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":5},"test-code":{"insertions":1,"deletions":1}}},{"hash":"a14dbe50e115cf78a3c4df0dbfd2093af46462ea","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"Checkstyle errors were causing Github Actions to fail due to errors\nin style of the code.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":2}}},{"hash":"08a0030c66010703f9e0069524de71872c23d341","isMergeCommit":false,"messageTitle":"Update success message for add command","messageBody":"Success message now includes details of GitHub username that is\nvisible to the user.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":0}}},{"hash":"cf9c903f54c1c7e231936773b5f991d7d3e56758","isMergeCommit":false,"messageTitle":"Update add command failure message","messageBody":"Failure message now includes details of how to specify the proper\nadd command feature with the GitHub field.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1}}},{"hash":"402a19f13e70372ff33748f18db939f9d5520d7e","isMergeCommit":false,"messageTitle":"Fix checkstyle errors","messageBody":"Checkstyle errors were causing Github Actions to fail due to errors\nin style of the code.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"4621e6eae337533a30494648d55e196bd0857d31","isMergeCommit":false,"messageTitle":"Add tests for GitHub class","messageBody":"Comprehensive of GitHub class to ensure that the methods perform as\nexpected, correct errors are thrown.\n\nIn particular, the username regex needs to be changed to adhere to\nstrict naming conventions of username by GitHub.\n","fileTypesAndContributionMap":{"test-code":{"insertions":65,"deletions":0}}},{"hash":"8a85f37e062c7a20611c3b6862fa0693f5540b4a","isMergeCommit":false,"messageTitle":"Update validation regex for github class","messageBody":"The previous validation regex, did not account for several issues:\n1. Username allows for \u003e 39 characters\n2. Username allows starting with hyphens and ending with hyphens\n3. Username allows for consecutive hyphens\n4. Username allows for hyphens only\n","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":6,"deletions":3}}},{"hash":"eb70b7cb762ad8f2a8ae4037d650bc518d6ec126","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-addTestsForAddCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"94b9371a4723186a37c28648e5e9c8991aecfca7","isMergeCommit":false,"messageTitle":"Update code comments for java class","messageBody":"Comments for the java class better reflects the implementation of\nits methods.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"3808628e81dfd403049460a6d7782909e674ff2f","isMergeCommit":true,"messageTitle":"Merge branch \u0027branch-addTestsForAddCommand\u0027 of https://github.com/Incogdino/tp into branch-addTestsForAddCommand","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ec38946c652ce3dbb85252aa0befa248e4e638e3","isMergeCommit":true,"messageTitle":"Merge pull request #72 from Incogdino/branch-addTestsForAddCommand","messageBody":"Add tests for GitHub class","fileTypesAndContributionMap":{}}]}],"tohjh":[{"date":"2024-09-28","commitResults":[{"hash":"622659bb4c8ce6e258959065c9a97dc80396ad12","isMergeCommit":false,"messageTitle":"Add Jia Han AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"509dd241e711fe5915ab284f2b35922261f9cbf7","isMergeCommit":false,"messageTitle":"Update Jia Han AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"1fdd5e1ccd721f5e6c3d997a86481602b182408b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-aboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"03eef594cca5fb181f259d463d236a273676c201","isMergeCommit":false,"messageTitle":"Update README (A1)","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"7ed3f4f8dbe2e4a18aea274f9f15d957e1217dda","isMergeCommit":false,"messageTitle":"Add glossary to developer guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":2}}},{"hash":"fc74a21151de23c5bde0c51707d2f0f5c52f59e7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-updateGithubActionsBadge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9817927fc088ab65ce6551150f1c79f4efedb3d9","isMergeCommit":false,"messageTitle":"Add fullstops for glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":3}}},{"hash":"b89eec4f8ec4a7154e34be3c1681ac7ced70c46d","isMergeCommit":true,"messageTitle":"Merge https://github.com/AY2425S1-CS2103T-T11-2/tp into branch-AddGlossary","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-09-29","commitResults":[{"hash":"5e2b9451364cf63b32fcd1940df4afc60343ad89","isMergeCommit":true,"messageTitle":"Merge https://github.com/AY2425S1-CS2103T-T11-2/tp into branch-AddGlossary","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4dfd77d6d973c4ae51d57fb54487cf23e68038dd","isMergeCommit":true,"messageTitle":"Add fullstop for glossary","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-08","commitResults":[{"hash":"b10f0af28436df58b2eaaf4305ec2c763e8b4a4a","isMergeCommit":false,"messageTitle":"Add storage and UI display for assignments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":78,"deletions":19}}}]},{"date":"2024-10-10","commitResults":[{"hash":"16bc38965cf4da64f3e64fe389ae096252729ebb","isMergeCommit":false,"messageTitle":"Fix test","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"050eabb751a327ed98bcf4a6f7cc730b3e1e7f2c","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-T11-2/tp into branch-add-grades-UI","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"SwaminathanViswa":{"docs":93,"functional-code":142,"test-code":220},"DesSnowy":{"docs":32,"functional-code":37,"test-code":47},"currynia":{"docs":418,"functional-code":285,"test-code":212},"Incogdino":{"docs":28,"functional-code":142,"test-code":137},"tohjh":{"docs":12,"functional-code":29,"test-code":0}},"authorContributionVariance":{"SwaminathanViswa":6163.2124,"DesSnowy":709.6483,"currynia":29059.016,"Incogdino":2808.17,"tohjh":465.00946},"authorDisplayNameMap":{"SwaminathanViswa":"CS2103T-T11-2 SWAM..ISWA","DesSnowy":"CS2103T-T11-2 LAU ..G YU","currynia":"CS2103T-T11-2 TEE .. RUI","Incogdino":"CS2103T-T11-2 JAVI.. WEE","tohjh":"CS2103T-T11-2 TOH .. HAN"}} diff --git a/AY2425S1-CS2103T-T16-2_tp_master/authorship.json b/AY2425S1-CS2103T-T16-2_tp_master/authorship.json index 0a9c1b9d..c2f69945 100644 --- a/AY2425S1-CS2103T-T16-2_tp_master/authorship.json +++ b/AY2425S1-CS2103T-T16-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-T16-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-T16-2/tp/actions)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"* This is **ClientGrid**.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * as a one stop e-book for property agents to store the contacts of clients and their relevant descriptions","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"* For the detailed documentation of this project, see the **[ClientGrid Product Website](https://ay2425s1-cs2103t-t16-2.github.io/tp/)**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":4,"thony-ui":1,"-":4}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" testImplementation group: \u0027org.mockito\u0027, name: \u0027mockito-core\u0027, version: \u00275.4.0\u0027","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" archiveFileName \u003d \u0027addressbook.jar\u0027","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"-":72}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"You can reach us at our emails: ","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"- `E1113234@u.nus.edu.sg`","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"- `kheehou.yong@u.nus.edu`","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"- `e1113214@u.nus.edu`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"- `e1155920@u.nus.edu`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"- `tan_shixin@u.nus.edu`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":"### Tan Shi Xin","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":"\u003cimg src\u003d\"images/apollo-tan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":"[[github](http://github.com/apollo-tan)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"* Role: Project Advisor. Handle the list feature and its documentation","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":"### Anthony Hermanto","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":"![Anthony picture](./images/thony-ui.png)","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":"[[github](https://github.com/thony-ui)]","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":"[[portfolio](https://www.anthonyhermanto.com)]","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":"* Responsibilities: Manage the team. Handle the logic for delete commands. (delete buyer and delete seller)","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"### Yong Khee Hou","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"![Khee Hou picture](./images/yongkheehou.png)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"[[github](https://github.com/yongkheehou)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"* Responsibilities: Ensure well-maintained documentation for the project. Handle command to add clients (buyers/ sellers).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"### Hrishiraj Mandal","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"\u003cimg src\u003d\"images/virusrwj223.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"[[github](https://github.com/Virusrwj223)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"[[portfolio](https://virusrwj223.github.io/hm)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":"[[linkedin](https://www.linkedin.com/in/hrishiraj-mandal)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"* Role: Tester","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time. Handle add property to database","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"### Wee Zhuo Lin","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"\u003cimg src\u003d\"images/jolwnn.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"[[GitHub](https://github.com/jolwnn)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"[[portfolio](https://jolynn-wee.vercel.app)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"* Role: Integration","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":"* Responsibilities: In charge of versioning of the code, maintaining the code repository, integrating various parts of ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"* the software to create a whole. Handle delete property commands and documentation.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"### Johnny Doe","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"### Jean Doe","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"### James Doe","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"yongkheehou":19,"Virusrwj223":7,"apollo-tan":5,"thony-ui":7,"-":60}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"thony-ui"},"content":"* Real estate agent who needs to manage a significant number of clients and properties.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"thony-ui"},"content":"* prefer desktop apps over other types.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"thony-ui"},"content":"* can type fast.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"thony-ui"},"content":"* prefers typing to mouse interactions.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"thony-ui"},"content":"* is reasonably comfortable using CLI apps.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"thony-ui"},"content":"**Value proposition**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"thony-ui"},"content":"ClientGrid is an address book designed for real estate agents to efficiently manage client contacts, including buyers and sellers. It provides a streamlined way to organize client data and monitor properties the agent is in charge of while maintaining core address book functionality.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"apollo-tan"},"content":"|----------|-------------------|------------------------------------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"yongkheehou"},"content":"| `* * *` | real estate agent | add a new client (buyer or seller) to ClientGrid | keep all their contact information organized in one place","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"thony-ui"},"content":"| `* * *` | real estate agent | delete a client (buyer or seller) from ClientGrid | keep all their contact information organized in one place |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"thony-ui"},"content":"| `* * *` | real estate agent | add new properties to client grid | keep track of my client\u0027s property details |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"jolwnn"},"content":"| `* * *` | real estate agent | delete a property entry from ClientGrid | remove entries that I no longer need |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"apollo-tan"},"content":"| `* * *` | real estate agent | list information about properties | easily manage my portfolio of available properties |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"apollo-tan"},"content":"| `* * *` | real estate agent | list information about buyers | match buyers with suitable properties based on their preferences |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"apollo-tan"},"content":"| `* * *` | real estate agent | list information about sellers | manage relationships and property listings efficiently |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"thony-ui"},"content":"| `* *` | real estate agent | indicate that a buyer wants to buy property X at Y price | keep track of the clients that are involved in the transaction |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"thony-ui"},"content":"| `* *` | real estate agent | indicate that a seller wants to sell property X at Y price | keep track of the clients that are involved in the transaction |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"yongkheehou"},"content":"(For all use cases below, the **System** is the `ClientGrid` and the **Actor** is the `real estate agent`, unless specified otherwise)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"yongkheehou"},"content":"**Use case: UC1 - Add Client (Buyer or Seller)**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"yongkheehou"},"content":"MSS:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"yongkheehou"},"content":"1. Real estate agent requests to add a buyer/ seller to ClientGrid and passes in the buyer/ seller\u0027s name, phone number and email.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"yongkheehou"},"content":"2. ClientGrid will add the buyer/ seller with the name, phone number, and email specified by the real estate agent.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"jolwnn"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"yongkheehou"},"content":"Extensions:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"yongkheehou"},"content":"* 1a. ClientGrid detects an error in the name/ phone number/ email format provided by the real estate agent.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"yongkheehou"},"content":" * 1a1. ClientGrid requests for the correct data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"yongkheehou"},"content":" * 1a2. Real estate agent enters new data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"yongkheehou"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"yongkheehou"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"yongkheehou"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"thony-ui"},"content":"**Use case: UC2 - Delete Client**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"thony-ui"},"content":"MSS:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"thony-ui"},"content":"1. Real estate agent requests to delete a buyer or seller based on their phone number.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"thony-ui"},"content":"2. ClientGrid will delete the respective client based on the phone number.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"jolwnn"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"thony-ui"},"content":"Extensions:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"yongkheehou"},"content":"* 1a. ClientGrid detects an error in the phone number format provided by the real estate agent .","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"yongkheehou"},"content":" * 1a1. ClientGrid requests for the correct data ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"yongkheehou"},"content":" * 1a2. Real estate agent enters new data","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"yongkheehou"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"yongkheehou"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"Virusrwj223"},"content":"**Use case: UC3 - Add a property**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Virusrwj223"},"content":"1. User inputs details of property","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"yongkheehou"},"content":"2. System outputs success message","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Virusrwj223"},"content":"* 1a. Invalid command detail symbols","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Virusrwj223"},"content":" * 1a1. System outputs error message in user console","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"thony-ui"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Virusrwj223"},"content":"* 1b. Postal code number contains invalid symbols and format typical in Singapore","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Virusrwj223"},"content":" * 1b1. System outputs error message in user console","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Virusrwj223"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Virusrwj223"},"content":"* 1c. Unit number contains invalid symbols and format","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Virusrwj223"},"content":" * 1c1. System outputs error message in user console","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"Virusrwj223"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"jolwnn"},"content":"**Use case: UC4 - Delete Property**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"jolwnn"},"content":"Guarantees:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"jolwnn"},"content":"* If property listing was in the database originally, it would be removed from property database with no side effects.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"jolwnn"},"content":"MSS:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"jolwnn"},"content":"1. Real estate agent requests to delete a property listing based on the property’s postal code and unit number.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"jolwnn"},"content":"2. ClientGrid will delete the respective property listing and indicate success.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"jolwnn"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"thony-ui"},"content":"Extensions:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"yongkheehou"},"content":"* 1a. ClientGrid detects an error in the postal code or unit number format provided by the real estate agent, .","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"yongkheehou"},"content":" * 1a1. ClientGrid requests for the correct data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"yongkheehou"},"content":" * 1a2. Real estate agent enters new data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"yongkheehou"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"yongkheehou"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"yongkheehou"},"content":"* 1b. ClientGrid is unable to find a matching property listing entry in the database.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"yongkheehou"},"content":" * 1b1. ClientGrid informs real estate agent that the property listing does not exist in the database.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"yongkheehou"},"content":" * Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"thony-ui"},"content":"**Use case: UC5 - List buyers, sellers, clients or properties**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"apollo-tan"},"content":"MSS:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"apollo-tan"},"content":"1. Real Estate Agent requests to view a list of buyers, sellers, clients or properties","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"apollo-tan"},"content":"2. ClientGrid will respond with the corresponding list","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"thony-ui"},"content":"Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"yongkheehou"},"content":"2. Should be able to hold up to 1000 clients and 500 properties without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"yongkheehou"},"content":"4. The client and property databases should be updated after every command successfully executed by ClientGrid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"Virusrwj223"},"content":"5. Should be able to handle case of corrupted file","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"yongkheehou"},"content":"* **Clients**: Buyers or Sellers of properties the real estate agent is managing","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"Virusrwj223"},"content":"* **Corrupted file**: Missing file and invalid data","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"yongkheehou":31,"jolwnn":17,"Virusrwj223":16,"apollo-tan":9,"thony-ui":34,"-":376}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eClientGrid\u003c/a\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103T-T16-2/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"thony-ui":2,"-":65}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"# ClientGrid","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-T16-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-T16-2/tp/actions)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-T16-2/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2425S1-CS2103T-T16-2/tp)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"**ClientGrid is a desktop application for managing your contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"* If you are interested in using ClientGrid, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"* If you are interested about developing ClientGrid, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"* This project is based on the ClientGrid-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"yongkheehou":4,"thony-ui":3,"-":15}},{"path":"setup-hooks.sh","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"#!/bin/sh","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"# Copy pre-commit hook to the .git/hooks directory","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"cp hooks/pre-commit .git/hooks/pre-commit","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"# Make the pre-commit hook executable","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"chmod +x .git/hooks/pre-commit","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"echo \"Git hooks installed.\"","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"thony-ui":9}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.storage.ClientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.storage.JsonClientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing AddressBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" ClientBookStorage clientBookStorage \u003d new JsonClientBookStorage(userPrefs.getClientBookFilePath());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, clientBookStorage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e clientBookOptional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" ReadOnlyClientBook initialClientData;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" clientBookOptional \u003d storage.readClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" if (!clientBookOptional.isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" logger.info(\"Creating a new client data file \" + storage.getClientBookFilePath()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" + \" populated with a sample ClientBook.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" initialClientData \u003d clientBookOptional.orElseGet(SampleDataUtil::getSampleClientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" System.out.println(initialClientData);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" logger.warning(\"Data file at \" + storage.getClientBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" + \" Will be starting with an empty ClientBook.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" initialClientData \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":" return new ModelManager(initialData, userPrefs, new PropertyBook(), initialClientData);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping AddressBook ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":22,"Virusrwj223":2,"-":184}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" /** Returns an unmodifiable view of the filtered list of clients (containing both buyers and sellers) */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" ObservableList\u003cClient\u003e getFilteredClientList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"yongkheehou":4,"-":50}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" storage.saveClientBook(model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" return model.getFilteredClientList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"yongkheehou":7,"-":88}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.LinkedHashSet;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.ClientTypes;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" .sorted() // Sorting the strings","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" .collect(Collectors.toCollection(LinkedHashSet::new)); // To maintain the sorted order","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"thony-ui"},"content":" * Formats the {@code client} for display to the user.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" public static String format(Client client) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"thony-ui"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" builder.append(client instanceof Buyer ? ClientTypes.BUYER.toString() + \"; \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" : ClientTypes.SELLER.toString() + \"; \")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" .append(client.getName())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"thony-ui"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" .append(client.getPhone())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"thony-ui"},"content":" .append(\"; Email: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" .append(client.getEmail());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"thony-ui"},"content":" return builder.toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"yongkheehou":12,"thony-ui":9,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/AddBuyerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Adds a {@code Buyer} to the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Extends {@link AddClientCommand} and utilizes its functionality to add a specific type of client: {@code Buyer}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"public class AddBuyerCommand extends AddClientCommand {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /** The command word used to trigger the AddBuyerCommand. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public static final String COMMAND_WORD \u003d \"addbuyer\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" * Describes the format and usage of the addbuyer command.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Includes the command word and expected parameters inherited from {@link AddClientCommand#CLIENT_PARAMETERS}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a buyer to the address book. \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" + AddClientCommand.CLIENT_PARAMETERS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" /** Success message for adding a new buyer, with a placeholder for the buyer\u0027s details. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_SUCCESS_BUYER \u003d \"New buyer added: %1$s\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" /** Error message shown when attempting to add a duplicate buyer. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_DUPLICATE_BUYER \u003d \"This buyer already exists in the address book\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code AddBuyerCommand} to add the specified {@code Buyer}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * @param buyer The {@code Buyer} to be added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" public AddBuyerCommand(Buyer buyer) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" super(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Executes the AddBuyerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Adds the buyer to the model if the buyer does not already exist in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * @param model The model which contains the address book data.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" * @return A {@link CommandResult} with a success message if the buyer was added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" * @throws CommandException if the buyer already exists in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (model.hasClient(toAdd) \u0026\u0026 toAdd instanceof Buyer) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" throw new CommandException(MESSAGE_DUPLICATE_BUYER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" model.addClient(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_BUYER, Messages.format(toAdd)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" * Checks if another object is equal to this AddBuyerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both objects are AddBuyerCommand instances and their buyer clients are equal.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" * @param other The object to be compared with this AddBuyerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" * @return True if both commands are equal, otherwise false.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof AddBuyerCommand)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand otherAddCommand \u003d (AddBuyerCommand) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" return this.toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":78}},{"path":"src/main/java/seedu/address/logic/commands/AddClientCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Represents an abstract command to add a {@link Client} to the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * This class is designed to be extended by specific commands that add different types of clients,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" * such as buyers or sellers.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public abstract class AddClientCommand extends Command {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * A string describing the expected parameters for adding a client.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" * Includes name, phone number, and email.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public static final String CLIENT_PARAMETERS \u003d PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_EMAIL + \"EMAIL\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" /** The client to be added to the address book. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" protected final Client toAdd;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code AddClientCommand} to add the specified {@code Client}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" * @param client The client to be added. Must not be null.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public AddClientCommand(Client client) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(client);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" this.toAdd \u003d client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Returns the string representation of this AddClientCommand, showing the client to be added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * The string is generated using {@link ToStringBuilder}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * @return A string representation of the AddClientCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":51}},{"path":"src/main/java/seedu/address/logic/commands/AddSellerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Adds a {@code Seller} to the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Extends {@link AddClientCommand} and uses its functionality to add a specific type of client: {@code Seller}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"public class AddSellerCommand extends AddClientCommand {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /** The command word used to trigger the AddSellerCommand. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public static final String COMMAND_WORD \u003d \"addseller\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" * Describes the format and usage of the addseller command.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Includes the command word and expected parameters inherited from {@link AddClientCommand#CLIENT_PARAMETERS}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a seller to the address book. \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" + AddClientCommand.CLIENT_PARAMETERS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" /** Success message for adding a new seller, with a placeholder for the seller\u0027s details. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_SUCCESS_SELLER \u003d \"New seller added: %1$s\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" /** Error message shown when attempting to add a duplicate seller. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_DUPLICATE_SELLER \u003d \"This seller already exists in the address book\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code AddSellerCommand} to add the specified {@code Seller}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * @param seller The {@code Seller} to be added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" public AddSellerCommand(Seller seller) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" super(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Executes the AddSellerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Adds the seller to the model if the seller does not already exist in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * @param model The model which contains the address book data.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" * @return A {@link CommandResult} with a success message if the seller was added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" * @throws CommandException if the seller already exists in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (model.hasClient(toAdd)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" if (toAdd instanceof Seller) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" throw new CommandException(MESSAGE_DUPLICATE_SELLER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" model.addClient(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_SELLER, Messages.format(toAdd)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" * Checks if another object is equal to this AddSellerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both objects are AddSellerCommand instances and their seller clients are equal.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" * @param other The object to be compared with this AddSellerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" * @return True if both commands are equal, otherwise false.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof AddSellerCommand)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand otherAddCommand \u003d (AddSellerCommand) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" return this.toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80}},{"path":"src/main/java/seedu/address/logic/commands/DeleteBuyerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":" * Represents a command to delete a buyer in the buyer management system.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommand extends Command {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" /** The command word for this specific action. */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" public static final String COMMAND_WORD \u003d \"deletebuyer\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"phoneNumber: %1$s\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" + \": Deletes the buyer identified by the phone number used in the displayed person list.\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" + \"Parameters: phone number (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + PREFIX_PHONE + \"81621234\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Buyer: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" private final Phone phoneNumber;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" * Constructs a {@code DeleteBuyerCommand} with the specified phone number.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" * @param phoneNumber The phone number of the buyer to delete.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" public DeleteBuyerCommand(Phone phoneNumber) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" requireAllNonNull(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" this.phoneNumber \u003d phoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" * Executes the delete buyer command and removes the buyer from the model.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" * @param model The model which the command should operate on.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" * @return A {@code CommandResult} object representing the result of the delete operation.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" * @throws CommandException If the buyer cannot be found or deleted.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" // Search for the person with the specified phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isBuyer)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new CommandException(String.format(\"Buyer not found. \", phoneNumber)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":" model.deleteClient(personToDelete);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"thony-ui"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"thony-ui"},"content":" * Checks if this {@code DeleteBuyerCommand} is equal to another object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"thony-ui"},"content":" * @param other The object to compare with this command.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"thony-ui"},"content":" * @return {@code true} if the other object is an instance of {@code DeleteBuyerCommand} with the same phone number.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"thony-ui"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"thony-ui"},"content":" // short circuit if same object","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"thony-ui"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"thony-ui"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"thony-ui"},"content":" if (!(other instanceof DeleteBuyerCommand)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"thony-ui"},"content":" // state check","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand d \u003d (DeleteBuyerCommand) other;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":" return this.phoneNumber.equals(d.phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":75}},{"path":"src/main/java/seedu/address/logic/commands/DeletePropertyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":" * Deletes a property using its postal code and unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":" public static final String COMMAND_WORD \u003d \"deleteunit\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":" + \": Deletes the property unit identified by its postal code and unit number.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" + PREFIX_POSTALCODE + \"POSTAL_CODE (must follow the Singapore postal code format i.e. be a 6 digit integer \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" + \"between 000000 to 999999) \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":" + PREFIX_UNITNUMBER + \"UNIT_NUMBER (in the format XXX-XXX) \\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" + PREFIX_POSTALCODE + \"118420 \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":" + PREFIX_UNITNUMBER + \"08-08 \";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" public static final String MESSAGE_DELETE_PROPERTY_SUCCESS \u003d \"Deleted property: %1$s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":" private final PostalCode postalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":" private final Unit unitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" * Constructs a {@code DeletePropertyCommand} with the specified postal code and unit number to delete a property.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" * @param postalCode The postal code of the property to delete.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" * @param unitNumber The unit number of the property to delete.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" public DeletePropertyCommand(PostalCode postalCode, Unit unitNumber) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" this.postalCode \u003d postalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" this.unitNumber \u003d unitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jolwnn"},"content":" return new CommandResult(MESSAGE_DELETE_PROPERTY_SUCCESS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jolwnn"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jolwnn"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jolwnn"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jolwnn"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jolwnn"},"content":" if (!(other instanceof DeletePropertyCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jolwnn"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand otherDeletePropertyCommand \u003d (DeletePropertyCommand) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jolwnn"},"content":" return postalCode.equals(otherDeletePropertyCommand.postalCode)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jolwnn"},"content":" \u0026\u0026 unitNumber.equals(otherDeletePropertyCommand.unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jolwnn"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jolwnn"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jolwnn"},"content":" .add(\"postalCode\", postalCode)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jolwnn"},"content":" .add(\"unitNumber\", unitNumber)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jolwnn"},"content":" .toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":74}},{"path":"src/main/java/seedu/address/logic/commands/DeleteSellerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":" * Represents a command to delete a seller in the seller management system.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommand extends Command {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" /** The command word for this specific action. */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" public static final String COMMAND_WORD \u003d \"deleteseller\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"phoneNumber: %1$s\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" + \": Deletes the seller identified by the phone number used in the displayed person list.\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" + \"Parameters: phone number (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + PREFIX_PHONE + \"81621234\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Seller: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" private final Phone phoneNumber;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" * Constructs a {@code DeleteSellerCommand} with the specified phone number.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" * @param phoneNumber The phone number of the buyer to delete.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" public DeleteSellerCommand(Phone phoneNumber) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" requireAllNonNull(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" this.phoneNumber \u003d phoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" * Executes the delete seller command and removes the seller from the model.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" * @param model The model which the command should operate on.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" * @return A {@code CommandResult} object representing the result of the delete operation.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" * @throws CommandException If the buyer cannot be found or deleted.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" // Search for the person with the specified phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isSeller)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new CommandException(String.format(\"Seller not found. \", phoneNumber)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":" model.deleteClient(personToDelete);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"thony-ui"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"thony-ui"},"content":" * Checks if this {@code DeleteSellerCommand} is equal to another object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"thony-ui"},"content":" * @param other The object to compare with this command.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"thony-ui"},"content":" * @return {@code true} if the other object is an instance of {@code DeleteSellerCommand} with the same phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"thony-ui"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"thony-ui"},"content":" // short circuit if same object","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"thony-ui"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"thony-ui"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"thony-ui"},"content":" if (!(other instanceof DeleteSellerCommand)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"thony-ui"},"content":" // state check","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand d \u003d (DeleteSellerCommand) other;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"thony-ui"},"content":" return this.phoneNumber.equals(d.phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":74}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":" * Represents the various types of entities that can be listed in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":" * This enum is used to specify the kind of records a property agent wishes to list,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" * allowing for easy differentiation between different categories.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" * \u003cp\u003ePossible values include:\u003c/p\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" * \u003cli\u003e{@link #BUYERS} - Represents buyers in the database.\u003c/li\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" * \u003cli\u003e{@link #SELLERS} - Represents sellers in the database.\u003c/li\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" * \u003cli\u003e{@link #CLIENTS} - Represents clients in the database, which includes both buyers and sellers.\u003c/li\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" * \u003cli\u003e{@link #PROPERTIES} - Represents properties in the database.\u003c/li\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" public static enum Key {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" BUYERS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" SELLERS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" CLIENTS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" PROPERTIES;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Lists all existing properties, sellers, buyers, \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" + \"or clients in the database.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" + \"Command format: \" + COMMAND_WORD + \" k/KEY\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" + \"Example commands:\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" + \"1. List all the buyers: \" + COMMAND_WORD + \" k/buyers\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" + \"2. List all the properties: \" + COMMAND_WORD + \" k/properties\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" + \"\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" + \"Parameter considerations:\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" + \"The key must be one of the following: \\\"buyers\\\", \\\"sellers\\\", \\\"clients\\\", or \\\"properties\\\".\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" + \"Only these four types of records are stored in the database.\\n\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":" //TODO modify this to actually show the correct thing","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all %1$s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" private final Key key;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":" // TODO:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"apollo-tan"},"content":" // 1. Store the String key to keep track of the thing (actually can use enum as well honestly)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"apollo-tan"},"content":" // 2. So your ListCommandParser will take the arguments and produce","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"apollo-tan"},"content":" // 3. Have a boolean isInvalidKey or something as true, because if that\u0027s the case, then return nothing","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"apollo-tan"},"content":" // 4. Otherwise, all you need to do it to fetch the correct String and then print the string out as pernormal","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"apollo-tan"},"content":" // (just call their toString honestly)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"apollo-tan"},"content":" // 2. Create a bunch of helper methods that aim to resolve this issue","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"apollo-tan"},"content":" // 3. If there\u0027s an error, that is if the key doesn\u0027t exist or something, then gg throw error","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"apollo-tan"},"content":" // 4. Otherwise, parse as per usual!","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"apollo-tan"},"content":" public ListCommand(Key key) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"apollo-tan"},"content":" this.key \u003d key;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"apollo-tan"},"content":" switch (key) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"apollo-tan"},"content":" case BUYERS:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"apollo-tan"},"content":" // Logic to list buyers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"apollo-tan"},"content":" System.out.println(\"Listing all buyers\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"apollo-tan"},"content":" case SELLERS:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"apollo-tan"},"content":" // Logic to list sellers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"apollo-tan"},"content":" System.out.println(\"Listing all sellers\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"apollo-tan"},"content":" case CLIENTS:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"apollo-tan"},"content":" // Logic to list clients","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"apollo-tan"},"content":" System.out.println(\"Listing all clients\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"apollo-tan"},"content":" case PROPERTIES:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"apollo-tan"},"content":" // Logic to list properties","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"apollo-tan"},"content":" System.out.println(\"Listing all properties\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"apollo-tan"},"content":" default:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"apollo-tan"},"content":" throw new AssertionError(\"Unexpected key: \" + key);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"apollo-tan"},"content":" return new CommandResult(String.format(ListCommand.MESSAGE_SUCCESS, this.key.toString().toLowerCase()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"apollo-tan":68,"-":20}},{"path":"src/main/java/seedu/address/logic/parser/AddBuyerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * Parses input arguments and creates a new {@link AddBuyerCommand} object.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * The parser processes the input string to extract the necessary parameters","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * (name, phone, and email) for creating a {@link Buyer}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"public class AddBuyerCommandParser implements Parser\u003cAddBuyerCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" * Parses the given {@code String} of arguments in the context of the {@link AddBuyerCommand}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * and returns an {@code AddBuyerCommand} object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" * @param args The input arguments from the user.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" * @return An {@code AddBuyerCommand} that adds a buyer based on the parsed input.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public AddBuyerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // Tokenize the input arguments based on the expected prefixes (name, phone, email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" // Check if all required prefixes are present and if the preamble is empty","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddBuyerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" // Verify there are no duplicate prefixes in the input","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" // Parse the name, phone, and email from the argument map","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d ParserUtil.parseClientName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d ParserUtil.parseClientPhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d ParserUtil.parseClientEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // Create a new Buyer using the parsed data","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" return new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" * @param argumentMultimap The argument multimap that holds the parsed arguments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" * @param prefixes The prefixes to check for presence.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" * @return True if all prefixes contain non-empty values, false otherwise.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":64}},{"path":"src/main/java/seedu/address/logic/parser/AddSellerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * Parses input arguments and creates a new {@link AddSellerCommand} object.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * The parser processes the input string to extract the necessary parameters","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * (name, phone, and email) for creating a {@link Seller}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"public class AddSellerCommandParser implements Parser\u003cAddSellerCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Parses the given {@code String} of arguments in the context of the {@link AddSellerCommand}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * and returns an {@code AddSellerCommand} object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" * @param args The input arguments from the user.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" * @return An {@code AddSellerCommand} that adds a seller based on the parsed input.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public AddSellerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" // Tokenize the input arguments based on the expected prefixes (name, phone, email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" // Check if all required prefixes are present and if the preamble is empty","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSellerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" // Verify there are no duplicate prefixes in the input","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" // Parse the name, phone, and email from the argument map","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d ParserUtil.parseClientName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d ParserUtil.parseClientPhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d ParserUtil.parseClientEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" // Create a new Seller using the parsed data","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" Seller seller \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" * @param argumentMultimap The argument multimap that holds the parsed arguments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" * @param prefixes The prefixes to check for presence.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" * @return True if all prefixes contain non-empty values, false otherwise.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":65}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"apollo-tan"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" case AddBuyerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" return new AddBuyerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" case AddSellerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" return new AddSellerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"thony-ui"},"content":" case DeleteBuyerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"thony-ui"},"content":" return new DeleteBuyerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"thony-ui"},"content":" case DeleteSellerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"thony-ui"},"content":" return new DeleteSellerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"yongkheehou":9,"apollo-tan":1,"thony-ui":6,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" public static final Prefix PREFIX_KEY \u003d new Prefix(\"k/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":" public static final Prefix PREFIX_POSTALCODE \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":" public static final Prefix PREFIX_UNITNUMBER \u003d new Prefix(\"u/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"jolwnn":2,"apollo-tan":1,"-":14}},{"path":"src/main/java/seedu/address/logic/parser/DeleteBuyerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":" * Parses input arguments and creates a new {@code DeleteBuyerCommand} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommandParser implements Parser\u003cDeleteBuyerCommand\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" * Parses the given {@code String} of arguments in the context of the {@code DeleteBuyerCommand}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" * and returns a {@code DeleteBuyerCommand} object for execution.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" * @param args The input arguments to parse.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" * @return A {@code DeleteBuyerCommand} object based on the parsed arguments.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" * @throws ParseException If the user input does not conform to the expected format or the phone number is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public DeleteBuyerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_PHONE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" String phoneNumber \u003d argMultimap.getValue(PREFIX_PHONE).orElse(\"\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" if (phoneNumber.isEmpty() || !phoneNumber.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteBuyerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" return new DeleteBuyerCommand(new Phone(phoneNumber));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":35}},{"path":"src/main/java/seedu/address/logic/parser/DeletePropertyCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.DeletePropertyCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":" * Parses input arguments and creates a new DeletePropertyCommand object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommandParser implements Parser\u003cDeletePropertyCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":" * Parses the given {@code String} of arguments in the context of the DeletePropertyCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":" * and returns a DeletePropertyCommand object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":" public DeletePropertyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_POSTALCODE, PREFIX_UNITNUMBER)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode \u003d ParserUtil.parsePostalCode(argMultimap.getValue(PREFIX_POSTALCODE).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" Unit unitNumber \u003d ParserUtil.parseUnit(argMultimap.getValue(PREFIX_UNITNUMBER).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" return new DeletePropertyCommand(postalCode, unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":48}},{"path":"src/main/java/seedu/address/logic/parser/DeleteSellerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":" * Parses input arguments and creates a new {@code DeleteSellerCommand} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommandParser implements Parser\u003cDeleteSellerCommand\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" * Parses the given {@code String} of arguments in the context of the {@code DeleteSellerCommand}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" * and returns a {@code DeleteSellerCommand} object for execution.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" * @param args The input arguments to parse.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" * @return A {@code DeleteSellerCommand} object based on the parsed arguments.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" * @throws ParseException If the user input does not conform to the expected format or the phone number is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public DeleteSellerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_PHONE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" String phoneNumber \u003d argMultimap.getValue(PREFIX_PHONE).orElse(\"\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" if (phoneNumber.isEmpty() || !phoneNumber.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSellerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" return new DeleteSellerCommand(new Phone(phoneNumber));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":35}},{"path":"src/main/java/seedu/address/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_KEY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":" * Parses input arguments and creates a new {@code ListCommand} object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" * Parses the given {@code String} of arguments in the context of the {@code ListCommand}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" * and returns a {@code ListCommand} object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" * @param args The input arguments to parse.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" * @return A {@code ListCommand} object based on the parsed arguments.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" * @throws ParseException If the user input does not conform to the expected format or the key is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" public ListCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_KEY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" String keyArg \u003d argMultimap.getValue(PREFIX_KEY).orElse(\"\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" if (keyArg.isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" // Switch case to handle different key values","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" ListCommand.Key key;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" switch (keyArg.toLowerCase()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" case \"buyers\":","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" key \u003d ListCommand.Key.BUYERS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" case \"sellers\":","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" key \u003d ListCommand.Key.SELLERS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" case \"clients\":","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" key \u003d ListCommand.Key.CLIENTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" case \"properties\":","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" key \u003d ListCommand.Key.PROPERTIES;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":" default:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"apollo-tan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"apollo-tan"},"content":" // Return the appropriate ListCommand with the parsed key","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"apollo-tan"},"content":" return new ListCommand(key);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"apollo-tan":56}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jolwnn"},"content":" * Parses a {@code String postalCode} into a {@code postalCode}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"jolwnn"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"jolwnn"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"jolwnn"},"content":" * @throws ParseException if the given {@code postalCode} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"jolwnn"},"content":" public static PostalCode parsePostalCode(String postalCode) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"jolwnn"},"content":" requireNonNull(postalCode);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"jolwnn"},"content":" String trimmedPostalCode \u003d postalCode.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"jolwnn"},"content":" if (!PostalCode.isValidPostalCode(trimmedPostalCode)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"jolwnn"},"content":" throw new ParseException(PostalCode.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"jolwnn"},"content":" return new PostalCode(trimmedPostalCode);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"jolwnn"},"content":" * Parses a {@code String unitNumber} into a {@code unitNumber}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"jolwnn"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"jolwnn"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"jolwnn"},"content":" * @throws ParseException if the given {@code unitNumber} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"jolwnn"},"content":" public static Unit parseUnit(String unitNumber) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"jolwnn"},"content":" requireNonNull(unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"jolwnn"},"content":" String trimmedUnitNumber \u003d unitNumber.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jolwnn"},"content":" if (!Unit.isValidUnit(trimmedUnitNumber)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jolwnn"},"content":" throw new ParseException(Unit.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"jolwnn"},"content":" return new Unit(trimmedUnitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":" public static seedu.address.model.client.Name parseClientName(String name) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":" return new seedu.address.model.client.Name(trimmedName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" public static seedu.address.model.client.Phone parseClientPhone(String phone) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(phone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":" return new seedu.address.model.client.Phone(trimmedPhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"yongkheehou"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":" public static seedu.address.model.client.Email parseClientEmail(String email) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"yongkheehou"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"yongkheehou"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" return new seedu.address.model.client.Email(trimmedEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"jolwnn":32,"yongkheehou":46,"-":124}},{"path":"src/main/java/seedu/address/model/ClientBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.UniqueClientList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * Wraps all data at the client-book level","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" * Duplicates are not allowed (by .isSameClient comparison)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class ClientBook implements ReadOnlyClientBook {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private final UniqueClientList clients;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * among constructors.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" clients \u003d new UniqueClientList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public ClientBook() {}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Creates an ClientBook using the Clients in the {@code toBeCopied}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public ClientBook(ReadOnlyClientBook toBeCopied) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" this();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" //// list overwrite operations","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Replaces the contents of the client list with {@code clients}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" * {@code clients} must not contain duplicate clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public void setClients(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" this.clients.setClients(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * Resets the existing data of this {@code ClientBook} with {@code newData}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" public void resetData(ReadOnlyClientBook newData) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" setClients(newData.getClientList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" //// client-level operations","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a client with the same identity as {@code client} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" return clients.contains(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" * Adds a client to the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" * The client must not already exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" public void addClient(Client p) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" clients.add(p);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" * Replaces the given client {@code target} in the list with {@code editedClient}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" clients.setClient(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" * Removes {@code key} from this {@code ClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" public void removeClient(Client key) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" clients.remove(key);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" //// util methods","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" .add(\"clients\", clients)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getClientList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" return clients.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof ClientBook)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" ClientBook otherClientBook \u003d (ClientBook) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" return clients.equals(otherClientBook.clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" return clients.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":130}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Predicate\u003cClient\u003e PREDICATE_SHOW_ALL_CLIENTS \u003d unused -\u003e true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" * Returns the user prefs\u0027 client book file path.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" Path getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" * Sets the user prefs\u0027 client book file path.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" void setClientBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" * Replaces client book data with the data in {@code clientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" void setClientBook(ReadOnlyClientBook clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" /** Returns the ClientBook */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" ReadOnlyClientBook getClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a Client with the same identity as {@code Client} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" boolean hasClient(Client client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" * Deletes the given client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":" * The person must exist in the client book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" void deleteClient(Client target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" * Adds the given client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" * {@code client} must not already exist in the client book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" void addClient(Client client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" * Replaces the given client {@code target} with {@code editedClient}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" * {@code target} must exist in the client book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" void setClient(Client target, Client editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" /** Returns an unmodifiable view of the filtered client list */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":" ObservableList\u003cClient\u003e getFilteredClientList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" * Updates the filter of the filtered client list to filter by the given {@code predicate}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" void updateFilteredClientList(Predicate\u003cClient\u003e predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":" * Returns the user prefs\u0027 property book file path.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Virusrwj223"},"content":" Path getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Virusrwj223"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Virusrwj223"},"content":" void setPropertyBookFilePath(Path propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Virusrwj223"},"content":" * Returns the user prefs.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook getPropertyBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a person with the same identity as {@code property} exists in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Virusrwj223"},"content":" boolean hasProperty(Property property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Virusrwj223"},"content":" * Adds the given property.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Virusrwj223"},"content":" * {@code property} must not already exist in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Virusrwj223"},"content":" void addProperty(Property property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"yongkheehou":52,"Virusrwj223":28,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.storage.JsonClientBookStorage;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" private final PropertyBook propertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" private final ClientBook clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" // note that filteredClients may be removed if we decide not to keep the filtering feature","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" private final FilteredList\u003cClient\u003e filteredClients;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" private Path clientBookFilePath \u003d Paths.get(\"data\" , \"clientbook.json\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook propertyBook, ReadOnlyClientBook clientBook) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(addressBook, userPrefs, propertyBook, clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" + userPrefs + \" and property prefs \" + propertyBook + \" and client book \" + clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" this.propertyBook \u003d new PropertyBook(propertyBook);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" this.clientBook \u003d new ClientBook(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" filteredClients \u003d new FilteredList\u003c\u003e(this.clientBook.getClientList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" this(new AddressBook(), new UserPrefs(), new PropertyBook(), new ClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" return userPrefs.getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath(Path clientBookFilePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(clientBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" userPrefs.setAddressBookFilePath(clientBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" public void setClientBook(ReadOnlyClientBook clientBook) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":" this.clientBook.resetData(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"yongkheehou"},"content":" public ReadOnlyClientBook getClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" return clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":" return clientBook.hasClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":" public void deleteClient(Client target) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":" clientBook.removeClient(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage jsonClientBookStorage \u003d new JsonClientBookStorage(clientBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" jsonClientBookStorage.saveClientBook(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":" System.out.println(\"Error while saving ClientBook: \" + e.getMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" clientBook.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" updateFilteredClientList(PREDICATE_SHOW_ALL_CLIENTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"yongkheehou"},"content":" clientBook.setClient(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Client List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"yongkheehou"},"content":" * Returns an unmodifiable view of the list of {@code Client} backed by the internal list of","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"yongkheehou"},"content":" * {@code versionedClientBook}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" return filteredClients;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"yongkheehou"},"content":" public void updateFilteredClientList(Predicate\u003cClient\u003e predicate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"yongkheehou"},"content":" filteredClients.setPredicate(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"Virusrwj223"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Property \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"Virusrwj223"},"content":" return userPrefs.getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath(Path propertyBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Virusrwj223"},"content":" userPrefs.setPropertyBookFilePath(propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"Virusrwj223"},"content":" public void addProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Virusrwj223"},"content":" propertyBook.addProperty(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"Virusrwj223"},"content":" public boolean hasProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"Virusrwj223"},"content":" return propertyBook.hasProperty(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"Virusrwj223"},"content":" public ReadOnlyPropertyBook getPropertyBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"Virusrwj223"},"content":" return propertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80,"Virusrwj223":37,"-":136}},{"path":"src/main/java/seedu/address/model/PropertyBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.UniquePropertiesList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" * Duplicates are not allowed (by .isSameProperty comparison)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyBook implements ReadOnlyPropertyBook {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" private final UniquePropertiesList properties;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" /*","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" * among constructors.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" properties \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBook() {}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" * Creates a PropertyBook using the Property in the {@code toBeCopied}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBook(ReadOnlyPropertyBook toBeCopied) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" this();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" * Resets the existing data of this {@code PropertyBook} with {@code newData}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" public void resetData(ReadOnlyPropertyBook newData) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" setProperty(newData.getPropertyList());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" * Replaces the contents of the property list with {@code properties}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty(List\u003cProperty\u003e properties) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" this.properties.setProperties(properties);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" * Adds a property to the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" * The property must not already exist in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" public void addProperty(Property p) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" properties.add(p);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a property with the same identity as {@code property} exists in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" public boolean hasProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" return properties.contains(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" .add(\"properties\", properties)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" public ObservableList\u003cProperty\u003e getPropertyList() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" return properties.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof PropertyBook)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook otherPropertyBook \u003d (PropertyBook) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" return properties.equals(otherPropertyBook.properties);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" return properties.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":106}},{"path":"src/main/java/seedu/address/model/ReadOnlyClientBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Unmodifiable view of a client book","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public interface ReadOnlyClientBook {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Returns an unmodifiable view of the client list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * This list will not contain any duplicate clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" ObservableList\u003cClient\u003e getClientList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":17}},{"path":"src/main/java/seedu/address/model/ReadOnlyPropertyBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * Unmodifiable view of a property book","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"public interface ReadOnlyPropertyBook {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * Returns an unmodifiable view of the property list.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" * This list will not contain any duplicate property.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" ObservableList\u003cProperty\u003e getPropertyList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":15}},{"path":"src/main/java/seedu/address/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" Path getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Path getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"Virusrwj223":2,"-":16}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private Path clientBookFilePath \u003d Paths.get(\"data\" , \"clientbook.json\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" private Path propertyBookFilePath \u003d Paths.get(\"data\" , \"propertybook.json\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return clientBookFilePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath(Path propertyBookFilePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(propertyBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" this.clientBookFilePath \u003d propertyBookFilePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" return propertyBookFilePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath(Path propertyBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" this.propertyBookFilePath \u003d propertyBookFilePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":10,"Virusrwj223":10,"-":88}},{"path":"src/main/java/seedu/address/model/client/Buyer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Represents a Buyer in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Buyer extends Client {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * Constructs a Buyer object with the specified name, phone, and email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" * @param name The name of the buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * @param phone The phone number of the buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * @param email The email address of the buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public Buyer(Name name, Phone phone, Email email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" super(name, phone, email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients are buyers and have the same phone number.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * This defines a weaker notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public boolean isSameClient(Client otherClient) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" if (otherClient \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" return otherClient instanceof Buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 otherClient.getPhone().equals(getPhone());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" return Objects.hash(name, phone, email, ClientTypes.BUYER.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients have the same identity and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * This defines a stronger notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Buyer)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" Buyer otherPerson \u003d (Buyer) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 email.equals(otherPerson.email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" .add(\"client type\", ClientTypes.BUYER.toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"thony-ui"},"content":" public boolean isBuyer() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"thony-ui"},"content":" public boolean isSeller() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":73,"thony-ui":9}},{"path":"src/main/java/seedu/address/model/client/Client.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":" * Represents a Client in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public abstract class Client {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" // Identity fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" protected final Name name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" protected final Phone phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" protected final Email email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public Client(Name name, Phone phone, Email email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(name, phone, email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" public Name getName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" return name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public Phone getPhone() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" return phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public Email getEmail() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" return email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" public abstract boolean isSameClient(Client otherClient);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" public abstract boolean isBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" public abstract boolean isSeller();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":39,"thony-ui":2}},{"path":"src/main/java/seedu/address/model/client/ClientTypes.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":" * Represents the different types of clients in the system.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":" * This enum provides two types of clients: BUYER and SELLER.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":" * Each client type is associated with a specific string representation.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"public enum ClientTypes {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Represents a buyer client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" BUYER(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * Represents a seller client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" SELLER(\"seller\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public static final String CLIENT_TYPE_CONSTRAINTS \u003d \"Client types should only be `BUYER` or `SELLER`\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private final String type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code ClientTypes} with the specified type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * @param type The string representation of the client type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" ClientTypes(String type) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" this.type \u003d type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" * Returns the string representation of the client type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * @return The client type as a string.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public String getType() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" return type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * Returns if a given string is a valid type.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidClientType(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" if (test \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" return test.equals(ClientTypes.BUYER.toString()) || test.equals(ClientTypes.SELLER.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":50}},{"path":"src/main/java/seedu/address/model/client/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Email {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" + \"characters.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // alphanumeric and special characters","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" * @param email A valid email address.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" public Email(String email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" value \u003d email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":78}},{"path":"src/main/java/seedu/address/model/client/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Name {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" public final String fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" * @param name A valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public Name(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" fullName \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" return fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" return fullName.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":66}},{"path":"src/main/java/seedu/address/model/client/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Phone {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public Phone(String phone) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(phone);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" value \u003d phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/main/java/seedu/address/model/client/Seller.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Represents a Seller in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Seller extends Client {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * Constructs a Seller object with the specified name, phone, and email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" * @param name The name of the seller.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * @param phone The phone number of the seller.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * @param email The email address of the seller.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public Seller(Name name, Phone phone, Email email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" super(name, phone, email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients are sellers and have the same phone number.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * This defines a weaker notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public boolean isSameClient(Client otherClient) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" if (otherClient \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" return otherClient instanceof Seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 otherClient.getPhone().equals(getPhone());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" return Objects.hash(name, phone, email, ClientTypes.SELLER.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients have the same identity and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * This defines a stronger notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Seller)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" Seller otherPerson \u003d (Seller) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 email.equals(otherPerson.email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" .add(\"client type\", ClientTypes.SELLER.toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":" public boolean isBuyer() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"thony-ui"},"content":" public boolean isSeller() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":73,"thony-ui":8}},{"path":"src/main/java/seedu/address/model/client/UniqueClientList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.ClientNotFoundException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.DuplicateClientException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" * A list of clients that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * A client is considered unique by comparing using {@code Client#isSameClient(Client)}. As such, adding and updating of","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * clients uses Client#isSameClient(Client) for equality so as to ensure that the client being added or updated is","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * unique in terms of identity in the UniqueClientList. However, the removal of a client uses Client#equals(Object) so","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * as to ensure that the client with exactly the same fields will be removed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" * @see Client#isSameClient(Client)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"public class UniqueClientList implements Iterable\u003cClient\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" private final ObservableList\u003cClient\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" private final ObservableList\u003cClient\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" * Returns true if the list contains an equivalent client as the given argument.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public boolean contains(Client toCheck) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" return internalList.stream().anyMatch(toCheck::isSameClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Adds a client to the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * The client must not already exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public void add(Client toAdd) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * Replaces the client {@code target} in the list with {@code editedClient}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" throw new ClientNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" if (!target.isSameClient(editedClient) \u0026\u0026 contains(editedClient)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" internalList.set(index, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" * Removes the equivalent client from the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" * The client must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" public void remove(Client toRemove) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" throw new ClientNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" public void setClients(UniqueClientList replacement) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" * Replaces the contents of this list with {@code clients}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" * {@code clients} must not contain duplicate clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" public void setClients(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" if (!clientsAreUnique(clients)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" internalList.setAll(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" public Iterator\u003cClient\u003e iterator() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof UniqueClientList)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList otherUniqueClientList \u003d (UniqueClientList) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" return internalList.equals(otherUniqueClientList.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" * Returns true if {@code clients} contains only unique clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" private boolean clientsAreUnique(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" for (int i \u003d 0; i \u003c clients.size() - 1; i++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" for (int j \u003d i + 1; j \u003c clients.size(); j++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" if (clients.get(i).isSameClient(clients.get(j))) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":150}},{"path":"src/main/java/seedu/address/model/client/exceptions/ClientNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":" * Signals that the operation is unable to find the specified client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"public class ClientNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":6}},{"path":"src/main/java/seedu/address/model/client/exceptions/DuplicateClientException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":" * Signals that the operation will result in duplicate Clients (Clients are considered duplicates if they have the same","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":" * identity and are of the same type (either Buyer or Seller).","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"public class DuplicateClientException extends RuntimeException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" public DuplicateClientException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":11}},{"path":"src/main/java/seedu/address/model/property/PostalCode.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * Represents a property postal code in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" * Guarantees: immutable; postal code is valid as declared in {@link #isValidPostalCode(String)}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"public class PostalCode {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" \"Postal Code numbers should only contain positive numbers, and it should be exactly 6 digits long\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{6}\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" public final String value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code PostalCode}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" * @param postalCode A valid phone number.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" public PostalCode(String postalCode) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(postalCode);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" checkArgument(isValidPostalCode(postalCode), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" value \u003d postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a given string is a valid postcal code.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public static boolean isValidPostalCode(String test) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" return value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof PostalCode)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" PostalCode otherPostalCode \u003d (PostalCode) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" return value.equals(otherPostalCode.value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":58}},{"path":"src/main/java/seedu/address/model/property/Property.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" * Represents a Property in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"public class Property {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" private final PostalCode postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" private final Unit unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" public Property(PostalCode postalCode, Unit unit) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(postalCode, unit);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" this.postalCode \u003d postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" this.unit \u003d unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" public PostalCode getPostalCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" return postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public Unit getUnit() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" return unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if both properties have the same unit number and postal code.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" public boolean isSameProperty(Property otherProperty) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" if (otherProperty \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" return otherProperty !\u003d null","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getPostalCode().equals(getPostalCode())","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getUnit().equals(getUnit());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if both properties have the same identity and data fields.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" * This defines a stronger notion of equality between two properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof Property)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" Property otherProperty \u003d (Property) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" return otherProperty !\u003d null","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getPostalCode().equals(getPostalCode())","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getUnit().equals(getUnit());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" return Objects.hash(postalCode, unit);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" .add(\"postalCode\", postalCode)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" .add(\"unit\", unit)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" .toString();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":82}},{"path":"src/main/java/seedu/address/model/property/UniquePropertiesList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.DuplicatePropertyException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.PropertyNotFoundException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" * A list of properties that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" * A property is considered unique by comparing using {@code Property#isSameProperty(Property)}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * As such, adding and updating of properties uses {@code Property#isSameProperty(Property)}","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * for equality to ensure uniqueness.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" * @see Property#isSameProperty(Property)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"public class UniquePropertiesList implements Iterable\u003cProperty\u003e {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" private final ObservableList\u003cProperty\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" private final ObservableList\u003cProperty\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if the list contains an equivalent property as the given argument.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" public boolean contains(Property toCheck) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" return internalList.stream().anyMatch(toCheck::isSameProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" * Adds a property to the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" * The property must not already exist in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public void add(Property toAdd) throws DuplicatePropertyException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" throw new DuplicatePropertyException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" * Replaces the property {@code target} in the list with {@code editedProperty}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" * The property identity of {@code editedProperty} must not be the same as another existing property in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty(Property target, Property editedProperty)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" throws DuplicatePropertyException, PropertyNotFoundException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(target, editedProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" throw new PropertyNotFoundException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" if (!target.isSameProperty(editedProperty) \u0026\u0026 contains(editedProperty)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" throw new DuplicatePropertyException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" internalList.set(index, editedProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" public void setProperties(UniquePropertiesList replacement) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" * Replaces the contents of this list with {@code properties}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" * {@code properties} must not contain duplicate properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" public void setProperties(List\u003cProperty\u003e properties) throws DuplicatePropertyException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(properties);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" if (!propertiesAreUnique(properties)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" throw new DuplicatePropertyException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" internalList.setAll(properties);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" public ObservableList\u003cProperty\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" * Returns an iterator over the properties in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" * @return An iterator over the properties.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" public Iterator\u003cProperty\u003e iterator() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof UniquePropertiesList)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList otherUniquePropertyList \u003d (UniquePropertiesList) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Virusrwj223"},"content":" return internalList.equals(otherUniquePropertyList.internalList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Virusrwj223"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Virusrwj223"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if {@code properties} contains only unique properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Virusrwj223"},"content":" private boolean propertiesAreUnique(List\u003cProperty\u003e properties) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" for (int i \u003d 0; i \u003c properties.size() - 1; i++) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Virusrwj223"},"content":" for (int j \u003d i + 1; j \u003c properties.size(); j++) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Virusrwj223"},"content":" if (properties.get(i).isSameProperty(properties.get(j))) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":143}},{"path":"src/main/java/seedu/address/model/property/Unit.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * Represents a property unit in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" * Guarantees: immutable; unit is valid as declared in {@link #isValidUnit(String)}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"public class Unit {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" \"Unit numbers should only contain numbers delimited by a dash, and it should be minimally 2 digits long\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALIDATION_REGEX \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" \"^(?:\\\\d{2}|1[0-3]\\\\d|14[0-8])-(?:\\\\d{2,5}|10\\\\d{4}|110\\\\d{3}|1110\\\\d{2}|11110\\\\d|111110)$\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" public final String value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code Unit}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" * @param unit A valid unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" public Unit(String unit) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(unit);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" checkArgument(isValidUnit(unit), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" value \u003d unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a given string is a valid unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" public static boolean isValidUnit(String test) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" return value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof Unit)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" Unit otherUnit \u003d (Unit) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" return value.equals(otherUnit.value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":58}},{"path":"src/main/java/seedu/address/model/property/exceptions/DuplicatePropertyException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property.exceptions;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":" * Signals that the operation will result in duplicate Property (Properties are considered duplicates if they have the","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":" * same identity).","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"public class DuplicatePropertyException extends RuntimeException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" public DuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":11}},{"path":"src/main/java/seedu/address/model/property/exceptions/PropertyNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property.exceptions;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":" * Signals that the operation is unable to find the specified person.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyNotFoundException extends RuntimeException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" public PropertyNotFoundException() {}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":8}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public static Client[] getSampleProperties() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new Client[] {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" new Buyer(new seedu.address.model.client.Name(\"Alex Yeoh\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"87438807\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"alexyeoh@example.com\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" new Seller(new seedu.address.model.client.Name(\"Bernice Yu\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"99272758\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"berniceyu@example.com\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" new Buyer(new seedu.address.model.client.Name(\"Charlotte Oliveiro\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"93210283\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"charlotte@example.com\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" new Seller(new seedu.address.model.client.Name(\"David Li\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"91031282\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"lidavid@example.com\"))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" };","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" public static ReadOnlyClientBook getSampleClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" ClientBook sampleAb \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" for (Client sampleClient : getSampleProperties()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" sampleAb.addClient(sampleClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" return sampleAb;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"yongkheehou":28,"-":60}},{"path":"src/main/java/seedu/address/storage/ClientBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Represents a storage for {@link seedu.address.model.ClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"public interface ClientBookStorage {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Path getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Returns ClientBook data as a {@link ReadOnlyClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" * @see #getClientBookFilePath()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e readClientBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Saves the given {@link ReadOnlyClientBook} to the storage.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" * @param clientBook cannot be null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" void saveClientBook(ReadOnlyClientBook clientBook) throws IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * @see #saveClientBook(ReadOnlyClientBook)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" void saveClientBook(ReadOnlyClientBook clientBook, Path filePath) throws IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":45}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedClient.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.ClientTypes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * Jackson-friendly version of {@link Client}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"class JsonAdaptedClient {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Client\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private final String name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" private final String phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" private final String email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" private final String type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code JsonAdaptedClient} with the given client details.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @JsonCreator","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" public JsonAdaptedClient(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"type\") String type) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" this.type \u003d type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" * Converts a given {@code Client} into this class for Jackson use.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" public JsonAdaptedClient(Client source) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" type \u003d source instanceof Buyer ? ClientTypes.BUYER.toString() : ClientTypes.SELLER.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * Converts this Jackson-friendly adapted client object into the model\u0027s {@code Client} object.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" public Client toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" if (type \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" ClientTypes.class.getSimpleName()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" if (!ClientTypes.isValidClientType(type)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(ClientTypes.CLIENT_TYPE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" return Objects.equals(type, ClientTypes.BUYER.toString()) ? new Buyer(modelName, modelPhone, modelEmail)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" : new Seller(modelName, modelPhone, modelEmail);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":93}},{"path":"src/main/java/seedu/address/storage/JsonClientBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * A class to access ClientBook data stored as a json file on the hard disk.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"public class JsonClientBookStorage implements ClientBookStorage {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonClientBookStorage.class);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private Path filePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" public JsonClientBookStorage(Path filePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" return filePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" return readClientBook(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Similar to {@link #readClientBook()}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cJsonSerializableClientBook\u003e jsonClientBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" filePath, JsonSerializableClientBook.class);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" if (!jsonClientBook.isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return Optional.empty();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" return Optional.of(jsonClientBook.get().toModelType());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" saveClientBook(clientBook, filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" * Similar to {@link #saveClientBook(ReadOnlyClientBook)}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" JsonUtil.saveJsonFile(new JsonSerializableClientBook(clientBook), filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80}},{"path":"src/main/java/seedu/address/storage/JsonSerializableClientBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * An Immutable ClientBook that is serializable to JSON format.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"@JsonRootName(value \u003d \"clientbook\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"class JsonSerializableClientBook {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_DUPLICATE_CLIENT \u003d \"Clients list contains duplicate client(s).\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private final List\u003cJsonAdaptedClient\u003e clients \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code JsonSerializableClientBook} with the given clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" @JsonCreator","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public JsonSerializableClientBook(@JsonProperty(\"clients\") List\u003cJsonAdaptedClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" this.clients.addAll(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" * Converts a given {@code ReadOnlyClientBook} into this class for Jackson use.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" public JsonSerializableClientBook(ReadOnlyClientBook source) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" clients.addAll(source.getClientList().stream().map(JsonAdaptedClient::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Converts this client book into the model\u0027s {@code ClientBook} object.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public ClientBook toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" ClientBook clientBook \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" for (JsonAdaptedClient jsonAdaptedClient : clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" Client client \u003d jsonAdaptedClient.toModelType();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" if (clientBook.hasClient(client)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_CLIENT);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" clientBook.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" return clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/main/java/seedu/address/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public interface Storage extends AddressBookStorage, UserPrefsStorage, ClientBookStorage {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" void saveClientBook(ReadOnlyClientBook clientBook) throws IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"yongkheehou":8,"-":31}},{"path":"src/main/java/seedu/address/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private AddressBookStorage addressBookStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" private ClientBookStorage clientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage userPrefsStorage,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" ClientBookStorage clientBookStorage) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" this.addressBookStorage \u003d addressBookStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" this.clientBookStorage \u003d clientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return readAddressBook(addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return addressBookStorage.readAddressBook(filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" addressBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" return readClientBook(clientBookStorage.getClientBookFilePath());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" return clientBookStorage.readClientBook(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" saveClientBook(clientBook, clientBookStorage.getClientBookFilePath());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" clientBookStorage.saveClientBook(clientBook, filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":35,"-":77}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.storage.JsonClientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage clientBookStorage \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" new JsonClientBookStorage(temporaryFolder.resolve(\"clientbook.json\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, clientBookStorage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"apollo-tan"},"content":" //TODO: Update test to reflect new ListCommand @apollo-tan","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"apollo-tan"},"content":" // @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"apollo-tan"},"content":" // public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"apollo-tan"},"content":" // String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"apollo-tan"},"content":" // assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"apollo-tan"},"content":" // }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage clientBookStorage \u003d new JsonClientBookStorage(prefPath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook, Path filePath)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":" throw e;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"yongkheehou"},"content":" };","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, clientBookStorage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":" String addBuyerCommand \u003d AddBuyerCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"yongkheehou"},"content":" + EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"yongkheehou"},"content":" Buyer expectedPerson \u003d new ClientBuilder(AMY).buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"yongkheehou"},"content":" expectedModel.addClient(expectedPerson);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":" assertCommandFailure(addBuyerCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"yongkheehou":23,"Virusrwj223":2,"apollo-tan":12,"-":155}},{"path":"src/test/java/seedu/address/logic/MessagesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"class MessagesTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" void getErrorMessageForDuplicatePrefixes_singlePrefix_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" Prefix prefixPhone \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.getErrorMessageForDuplicatePrefixes(prefixPhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" assertEquals(Messages.MESSAGE_DUPLICATE_FIELDS + \"p/\", result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" void getErrorMessageForDuplicatePrefixes_multiplePrefixes_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" Prefix prefixPhone \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" Prefix prefixEmail \u003d new Prefix(\"e/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.getErrorMessageForDuplicatePrefixes(prefixPhone, prefixEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertEquals(Messages.MESSAGE_DUPLICATE_FIELDS + \"e/ p/\", result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" void formatBuyer_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Client buyer \u003d new Buyer(new Name(\"Alice Bee\"), new Phone(\"98765432\"), new Email(\"alice@example.com\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.format(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" String expected \u003d \"BUYER; Alice Bee; Phone: 98765432; Email: alice@example.com\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expected, result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" void formatSeller_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" Client seller \u003d new Seller(new Name(\"Bob Bee\"), new Phone(\"87654321\"), new Email(\"bob@example.com\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.format(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" String expected \u003d \"SELLER; Bob Bee; Phone: 87654321; Email: bob@example.com\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expected, result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":67}},{"path":"src/test/java/seedu/address/logic/commands/AddBuyerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"class AddBuyerCommandTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private Buyer buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private Model model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" @BeforeEach","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" void setUp() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" buyer \u003d mock(Buyer.class); // Mocking the Buyer object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" model \u003d mock(Model.class); // Mocking the Model object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" void constructor_nullBuyer_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddBuyerCommand(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" void execute_buyerAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(buyer)).thenReturn(false);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(AddBuyerCommand.MESSAGE_SUCCESS_BUYER, Messages.format(buyer));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" CommandResult result \u003d addBuyerCommand.execute(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" verify(model).addClient(buyer); // Verifying that model.addClient() is called with the correct argument","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" void execute_duplicateBuyer_throwsCommandException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model to simulate the presence of a duplicate buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(buyer)).thenReturn(true);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" assertThrows(CommandException.class, () -\u003e addBuyerCommand.execute(model),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand.MESSAGE_DUPLICATE_BUYER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addBuyerCommand, addBuyerCommand); // Same object should return true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" void equals_sameBuyer_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand1 \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand2 \u003d new AddBuyerCommand(buyer); // Same buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addBuyerCommand1, addBuyerCommand2); // Different instances, same buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" void equals_differentBuyer_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Buyer differentBuyer \u003d mock(Buyer.class); // Different Buyer instance","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand1 \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand2 \u003d new AddBuyerCommand(differentBuyer); // Different buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addBuyerCommand1, addBuyerCommand2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" void equals_differentObject_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" Client differentClient \u003d mock(Client.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addBuyerCommand, differentClient); // Comparing with a different type of object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":106}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":5,"-":46}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":" public void setClientBook(ReadOnlyClientBook newData) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" public ReadOnlyClientBook getClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" public void deleteClient(Client target) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"yongkheehou"},"content":" public void updateFilteredClientList(Predicate\u003cClient\u003e predicate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"Virusrwj223"},"content":" public ReadOnlyPropertyBook getPropertyBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"Virusrwj223"},"content":" public boolean hasProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Virusrwj223"},"content":" public void addProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":50,"Virusrwj223":27,"-":206}},{"path":"src/test/java/seedu/address/logic/commands/AddSellerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"class AddSellerCommandTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private Seller seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private Model model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" @BeforeEach","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" void setUp() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" seller \u003d mock(Seller.class); // Mocking the Seller object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" model \u003d mock(Model.class); // Mocking the Model object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" void constructor_nullSeller_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddSellerCommand(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" void execute_sellerAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(seller)).thenReturn(false);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(AddSellerCommand.MESSAGE_SUCCESS_SELLER, Messages.format(seller));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" CommandResult result \u003d addSellerCommand.execute(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" verify(model).addClient(seller); // Verifying that model.addClient() is called with the correct argument","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" void execute_duplicateSeller_throwsCommandException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model to simulate the presence of a duplicate seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(seller)).thenReturn(true);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" assertThrows(CommandException.class, () -\u003e addSellerCommand.execute(model),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand.MESSAGE_DUPLICATE_SELLER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addSellerCommand, addSellerCommand); // Same object should return true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" void equals_sameSeller_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand1 \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand2 \u003d new AddSellerCommand(seller); // Same seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addSellerCommand1, addSellerCommand2); // Different instances, same seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" void equals_differentSeller_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" Seller differentSeller \u003d mock(Seller.class); // Different Seller instance","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand1 \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand2 \u003d new AddSellerCommand(differentSeller); // Different seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addSellerCommand1, addSellerCommand2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" void equals_differentObject_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addSellerCommand, new Object()); // Comparing with a different type of object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":104}},{"path":"src/test/java/seedu/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":5,"-":30}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_POSTALCODE_ADMIRALTY \u003d \"654321\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_POSTALCODE_BEDOK \u003d \"321456\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_UNIT_ADMIRALTY \u003d \"02-22\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_UNIT_BEDOK \u003d \"11-12\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":4,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/DeleteBuyerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.DeleteBuyerCommand.MESSAGE_DELETE_PERSON_SUCCESS;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommandTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" getTypicalPropertyBook(), getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" public void execute_phoneNumberFound_assertCommandSuccess() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" final Phone phoneNumber \u003d new Phone(\"94351253\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand deleteBuyerCommand \u003d new DeleteBuyerCommand(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isBuyer)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new AssertionError(\"Phone number not found in the model\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" assertCommandSuccess(deleteBuyerCommand, model, expectedMessage, model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" final DeleteBuyerCommand standardCommand \u003d new DeleteBuyerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand commandWithSameValues \u003d new DeleteBuyerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" // different buyer -\u003e return false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new DeleteBuyerCommand(new Phone(VALID_PHONE_BOB))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":3,"thony-ui":47}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":7,"-":117}},{"path":"src/test/java/seedu/address/logic/commands/DeletePropertyCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode1 \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode2 \u003d new PostalCode(VALID_POSTALCODE_BEDOK);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" Unit unit1 \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":" Unit unit2 \u003d new Unit(VALID_UNIT_BEDOK);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deleteFirstCommand \u003d new DeletePropertyCommand(postalCode1, unit1);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deleteSecondCommand \u003d new DeletePropertyCommand(postalCode2, unit2);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deleteFirstCommandCopy \u003d new DeletePropertyCommand(postalCode1, unit1);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" // different property -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jolwnn"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jolwnn"},"content":" Unit unit \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deletePropertyCommand \u003d new DeletePropertyCommand(postalCode, unit);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jolwnn"},"content":" String expected \u003d DeletePropertyCommand.class.getCanonicalName()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jolwnn"},"content":" + \"{postalCode\u003d\" + postalCode + \", unitNumber\u003d\" + unit + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jolwnn"},"content":" assertEquals(expected, deletePropertyCommand.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":59}},{"path":"src/test/java/seedu/address/logic/commands/DeleteSellerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.DeleteSellerCommand.MESSAGE_DELETE_PERSON_SUCCESS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommandTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" public void execute() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" final Phone phoneNumber \u003d new Phone(\"98765432\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand deleteSellerCommand \u003d new DeleteSellerCommand(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isSeller)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new AssertionError(\"Phone number not found in the model\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" System.out.println(expectedMessage);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" assertCommandSuccess(deleteSellerCommand, model, expectedMessage, model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" final DeleteSellerCommand standardCommand \u003d new DeleteSellerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand commandWithSameValues \u003d new DeleteSellerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":" // different buyer -\u003e return false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new DeleteSellerCommand(new Phone(VALID_PHONE_BOB))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":3,"thony-ui":50}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" new PropertyBook(model.getPropertyBook()), model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" new PropertyBook(model.getPropertyBook()), model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" new PropertyBook(model.getPropertyBook()), model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" new PropertyBook(model.getPropertyBook()), model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":12,"-":179}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":5,"-":89}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" public void testEnumValues() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" assertEquals(4, ListCommand.Key.values().length);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" assertTrue(Arrays.asList(ListCommand.Key.values()).contains(ListCommand.Key.BUYERS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" assertTrue(Arrays.asList(ListCommand.Key.values()).contains(ListCommand.Key.SELLERS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" assertTrue(Arrays.asList(ListCommand.Key.values()).contains(ListCommand.Key.CLIENTS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" assertTrue(Arrays.asList(ListCommand.Key.values()).contains(ListCommand.Key.PROPERTIES));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" //TODO: Update test to reflect new ListCommand @apollo-tan","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":" public void listCommandGeneration() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.BUYERS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"apollo-tan"},"content":" // Check if command is an instance of ListCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"apollo-tan"},"content":" assertTrue(command instanceof ListCommand, \"The command should be an instance of ListCommand\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"apollo-tan"},"content":" // TODO: Add more robust testing","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteBuyers() throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.BUYERS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all buyers\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteSellers() throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.SELLERS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all sellers\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteClients() throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.CLIENTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all clients\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteProperties() throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.PROPERTIES);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all properties\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"apollo-tan"},"content":" // @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"apollo-tan"},"content":" // public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"apollo-tan"},"content":" // assertCommandSuccess(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"apollo-tan"},"content":" // new ListCommand(ListCommand.Key.SELLERS),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"apollo-tan"},"content":" // model,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"apollo-tan"},"content":" // ListCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"apollo-tan"},"content":" // expectedModel","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"apollo-tan"},"content":" // );","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"apollo-tan"},"content":" // }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"apollo-tan"},"content":" //","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"apollo-tan"},"content":" // @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"apollo-tan"},"content":" // public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"apollo-tan"},"content":" // showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"apollo-tan"},"content":" // assertCommandSuccess(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"apollo-tan"},"content":" // new ListCommand(ListCommand.Key.SELLERS),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"apollo-tan"},"content":" // model,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"apollo-tan"},"content":" // ListCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"apollo-tan"},"content":" // expectedModel","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"apollo-tan"},"content":" // );","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"apollo-tan"},"content":" // }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"Virusrwj223":4,"apollo-tan":68,"-":32}},{"path":"src/test/java/seedu/address/logic/parser/AddBuyerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"public class AddBuyerCommandParserTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private AddBuyerCommandParser parser \u003d new AddBuyerCommandParser();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Buyer expectedBuyer \u003d new ClientBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // normal input with all fields","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" new AddBuyerCommand(expectedBuyer));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" public void parse_missingFields_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddBuyerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // missing name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // missing phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // missing email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" // invalid name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // invalid phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + INVALID_PHONE_DESC + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" // invalid email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" public void parse_duplicatePrefixes_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageName \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" String expectedMessagePhone \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageEmail \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" // duplicate name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" expectedMessageName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" // duplicate phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" expectedMessagePhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" // duplicate email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" expectedMessageEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":91}},{"path":"src/test/java/seedu/address/logic/parser/AddSellerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"public class AddSellerCommandParserTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private AddSellerCommandParser parser \u003d new AddSellerCommandParser();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Seller expectedSeller \u003d new ClientBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).buildSeller();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // normal input with all fields","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" new AddSellerCommand(expectedSeller));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" public void parse_missingFields_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSellerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // missing name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // missing phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // missing email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" // invalid name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // invalid phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + INVALID_PHONE_DESC + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" // invalid email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" public void parse_duplicatePrefixes_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageName \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" String expectedMessagePhone \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageEmail \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" // duplicate name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" expectedMessageName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // duplicate phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" expectedMessagePhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" // duplicate email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" expectedMessageEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":90}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.ALICE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.DANIEL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" public void parseCommand_addBuyer() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" Buyer alice \u003d new ClientBuilder(ALICE).withEmail(ALICE.getEmail().toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" .withPhone(ALICE.getPhone().toString()).buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand command \u003d (AddBuyerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + ALICE.getName() + \" \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_PHONE + ALICE.getPhone() + \" \" + PREFIX_EMAIL + ALICE.getEmail()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" assertEquals(new AddBuyerCommand(alice), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" public void parseCommand_addSeller() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" Seller daniel \u003d new ClientBuilder(DANIEL).withEmail(DANIEL.getEmail().toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" .withPhone(DANIEL.getPhone().toString()).buildSeller();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand command \u003d (AddSellerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + DANIEL.getName() + \" \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_PHONE + DANIEL.getPhone() + \" \" + PREFIX_EMAIL + DANIEL.getEmail()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" assertEquals(new AddSellerCommand(daniel), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"thony-ui"},"content":" public void parseCommand_deleteBuyer() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"thony-ui"},"content":" final String phoneNumber \u003d \"12345678\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand command \u003d (DeleteBuyerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"thony-ui"},"content":" assertEquals(new DeleteBuyerCommand(new Phone(phoneNumber)), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"thony-ui"},"content":" public void parseCommand_deleteSeller() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"thony-ui"},"content":" final String phoneNumber \u003d \"12345678\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand command \u003d (DeleteSellerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"thony-ui"},"content":" assertEquals(new DeleteSellerCommand(new Phone(phoneNumber)), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"apollo-tan"},"content":" //TODO: Update test to reflect new ListCommand @apollo-tan","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/buyers\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/sellers\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/properties\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/clients\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"yongkheehou":33,"apollo-tan":6,"thony-ui":19,"-":99}},{"path":"src/test/java/seedu/address/logic/parser/DeleteBuyerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommandParserTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":" private DeleteBuyerCommandParser parser \u003d new DeleteBuyerCommandParser();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" private final String nonEmptyphoneNumber \u003d \"12345678\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" public void parse_phoneNumberSpecified_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" // Test for valid phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteBuyerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + nonEmptyphoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" assertParseSuccess(parser, userInput, new DeleteBuyerCommand(new Phone(nonEmptyphoneNumber)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public void parse_emptyPhoneNumber_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" // Test for empty phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteBuyerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteBuyerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteBuyerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" // no parameters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, DeleteBuyerCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":38}},{"path":"src/test/java/seedu/address/logic/parser/DeletePropertyCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.DeletePropertyCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommandParserTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":" private DeletePropertyCommandParser parser \u003d new DeletePropertyCommandParser();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" // Test for valid postal code and unit number","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \" \" + PREFIX_POSTALCODE + \"118420 \" + PREFIX_UNITNUMBER + \"08-08\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":" PostalCode validPostalCode \u003d new PostalCode(\"118420\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" Unit validUnitNumber \u003d new Unit(\"08-08\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand expectedCommand \u003d new DeletePropertyCommand(validPostalCode, validUnitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" public void parse_invalidPostalCodeFormat_failure() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":" // Test for invalid postal code format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \" \" + PREFIX_POSTALCODE + \"abc123\" + \" \" + PREFIX_UNITNUMBER + \"08-08\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d PostalCode.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" public void parse_invalidUnitNumberFormat_failure() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":" // Test for invalid unit number format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \" \" + PREFIX_POSTALCODE + \"118420\" + \" \" + PREFIX_UNITNUMBER + \"808\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d Unit.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":46}},{"path":"src/test/java/seedu/address/logic/parser/DeleteSellerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommandParserTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" private DeleteSellerCommandParser parser \u003d new DeleteSellerCommandParser();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" private final String nonEmptyphoneNumber \u003d \"12345678\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" public void parse_phoneNumberSpecified_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" // Test for valid phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteSellerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + nonEmptyphoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" assertParseSuccess(parser, userInput, new DeleteSellerCommand(new Phone(nonEmptyphoneNumber)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" public void parse_emptyPhoneNumber_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" // Test for empty phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteSellerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSellerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSellerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" // no parameters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, DeleteSellerCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":38}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Test for parsing index","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Address","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" // Tests for Tags","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"yongkheehou"},"content":" // Tests for client Name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseClientName(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseClientName(INVALID_NAME));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_validValueWithoutWhitespace_returnsClientName() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Name expectedName \u003d new seedu.address.model.client.Name(VALID_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedName, ParserUtil.parseClientName(VALID_NAME));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_validValueWithWhitespace_returnsTrimmedClientName() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"yongkheehou"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Name expectedName \u003d new seedu.address.model.client.Name(VALID_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedName, ParserUtil.parseClientName(nameWithWhitespace));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"yongkheehou"},"content":" // Tests for client Phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseClientPhone(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseClientPhone(INVALID_PHONE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_validValueWithoutWhitespace_returnsClientPhone() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Phone expectedPhone \u003d new seedu.address.model.client.Phone(VALID_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedPhone, ParserUtil.parseClientPhone(VALID_PHONE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_validValueWithWhitespace_returnsTrimmedClientPhone() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"yongkheehou"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Phone expectedPhone \u003d new seedu.address.model.client.Phone(VALID_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedPhone, ParserUtil.parseClientPhone(phoneWithWhitespace));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"yongkheehou"},"content":" // Tests for client Email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseClientEmail((String) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseClientEmail(INVALID_EMAIL));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_validValueWithoutWhitespace_returnsClientEmail() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Email expectedEmail \u003d new seedu.address.model.client.Email(VALID_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedEmail, ParserUtil.parseClientEmail(VALID_EMAIL));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_validValueWithWhitespace_returnsTrimmedClientEmail() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"yongkheehou"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Email expectedEmail \u003d new seedu.address.model.client.Email(VALID_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedEmail, ParserUtil.parseClientEmail(emailWithWhitespace));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"yongkheehou":78,"-":192}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.CARL;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.DANIEL;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBookBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" assertEquals(new ClientBook(), new ClientBook(modelManager.getClientBook()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" userPrefs.setClientBookFilePath(Paths.get(\"client/book/file/path\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" userPrefs.setClientBookFilePath(Paths.get(\"new/client/book/file/path\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setClientBookFilePath(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath_validPath_setsClientBookFilePath() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Path path \u003d Paths.get(\"data/clientbook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" modelManager.setClientBookFilePath(path);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" assertEquals(path, modelManager.getClientBookFilePath());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook Related Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook Related Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" public void hasClient_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasClient(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" public void hasClient_clientNotInClientBook_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" assertFalse(modelManager.hasClient(CARL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" public void hasClient_clientInClientBook_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" modelManager.addClient(CARL);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertTrue(modelManager.hasClient(CARL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" public void getFilteredClientList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredClientList().remove(0));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Equality Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":" ClientBook clientBook \u003d new ClientBookBuilder().withClient(CARL).withClient(DANIEL).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook propertyBook \u003d new PropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" ClientBook differentClientBook \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Virusrwj223"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs, propertyBook, clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Virusrwj223"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs, propertyBook, clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs, new PropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"Virusrwj223"},"content":" differentClientBook)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs, new PropertyBook(), clientBook)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs, new PropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"Virusrwj223"},"content":" clientBook)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setPropertyBookFilePath(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"Virusrwj223"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"Virusrwj223"},"content":" modelManager.setPropertyBookFilePath(path);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(path, modelManager.getPropertyBookFilePath());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"Virusrwj223"},"content":" public void hasProperty_propertyInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"Virusrwj223"},"content":" modelManager.addProperty(BEDOK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(modelManager.hasProperty(BEDOK));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"yongkheehou":47,"Virusrwj223":27,"-":127}},{"path":"src/test/java/seedu/address/model/client/BuyerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"class BuyerTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_sameClient_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" assertTrue(buyer1.isSameClient(buyer1));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_samePhoneDifferentBuyer_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name2, phone, email2); // Different name and email, same phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" assertTrue(buyer1.isSameClient(buyer2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_differentPhone_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name1, phone2, email2); // Different phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" assertFalse(buyer1.isSameClient(buyer2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" assertEquals(buyer, buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameAttributes_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name1, phone1, email1); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertEquals(buyer1, buyer2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" void testEquals_differentAttributes_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(buyer1, buyer2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_sameAttributes_returnsSameHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name, phone, email); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" assertEquals(buyer1.hashCode(), buyer2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_differentAttributes_returnsDifferentHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(buyer1.hashCode(), buyer2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" void testToString_correctFormat() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" when(name.toString()).thenReturn(\"John Doe\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" when(phone.toString()).thenReturn(\"12345678\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" when(email.toString()).thenReturn(\"john@example.com\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" String expectedString \u003d \"seedu.address.model.client.Buyer\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" + \"{client type\u003dBUYER, name\u003dJohn Doe, phone\u003d12345678, email\u003djohn@example.com}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedString, buyer.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":154}},{"path":"src/test/java/seedu/address/model/client/ClientTypesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class ClientTypesTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void getType_buyer_returnsCorrectString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertEquals(\"buyer\", ClientTypes.BUYER.getType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void getType_seller_returnsCorrectString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" assertEquals(\"seller\", ClientTypes.SELLER.getType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_validBuyer_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" assertTrue(ClientTypes.isValidClientType(\"BUYER\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_validSeller_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertTrue(ClientTypes.isValidClientType(\"SELLER\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_invalidType_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"INVALID\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_lowerCaseBuyer_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"buyer\")); // Case-sensitive check","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_lowerCaseSeller_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"seller\")); // Case-sensitive check","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_nullValue_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_emptyString_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":55}},{"path":"src/test/java/seedu/address/model/client/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class EmailTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public void isValidEmail() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // null email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" // blank email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // missing parts","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" // invalid parts","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // valid email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":88}},{"path":"src/test/java/seedu/address/model/client/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class NameTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public void isValidName() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // null name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" // invalid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" // valid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/test/java/seedu/address/model/client/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class PhoneTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public void isValidPhone() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // null phone number","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" // invalid phone numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" // valid phone numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/test/java/seedu/address/model/client/SellerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"class SellerTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_sameClient_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" assertTrue(seller1.isSameClient(seller1));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_samePhoneDifferentSeller_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name2, phone, email2); // Different name and email, same phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" assertTrue(seller1.isSameClient(seller2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_differentPhone_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name1, phone2, email2); // Different phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" assertFalse(seller1.isSameClient(seller2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" Seller seller \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" assertEquals(seller, seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameAttributes_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name1, phone1, email1); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertEquals(seller1, seller2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" void testEquals_differentAttributes_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(seller1, seller2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_sameAttributes_returnsSameHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name, phone, email); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" assertEquals(seller1.hashCode(), seller2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_differentAttributes_returnsDifferentHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(seller1.hashCode(), seller2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" void testToString_correctFormat() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" when(name.toString()).thenReturn(\"Jane Smith\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" when(phone.toString()).thenReturn(\"87654321\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" when(email.toString()).thenReturn(\"jane@example.com\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" Seller seller \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" String expectedString \u003d \"seedu.address.model.client.Seller\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" + \"{client type\u003dSELLER, name\u003dJane Smith, phone\u003d87654321, email\u003djane@example.com}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedString, seller.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":154}},{"path":"src/test/java/seedu/address/model/client/UniqueClientListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.ALICE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.ClientNotFoundException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.DuplicateClientException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"public class UniqueClientListTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private final UniqueClientList uniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public void contains_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.contains(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(uniqueClientList.contains(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertTrue(uniqueClientList.contains(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" .buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" assertTrue(uniqueClientList.contains(editedAlice));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" public void add_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.add(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" public void add_duplicateClient_throwsDuplicateClientException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e uniqueClientList.add(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" public void setClient_nullTargetClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClient(null, ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" public void setClient_nullEditedClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClient(ALICE, null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" public void setClient_targetClientNotInList_throwsClientNotFoundException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ClientNotFoundException.class, () -\u003e uniqueClientList.setClient(ALICE, ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientIsSameClient_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClient(ALICE, ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientHasSameIdentity_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withEmail(VALID_EMAIL_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" .buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClient(ALICE, editedAlice);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(editedAlice);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientHasDifferentIdentity_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClient(ALICE, BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientHasNonUniqueIdentity_throwsDuplicateClientException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e uniqueClientList.setClient(ALICE, BOB));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" public void remove_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.remove(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" public void remove_personDoesNotExist_throwsClientNotFoundException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ClientNotFoundException.class, () -\u003e uniqueClientList.remove(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" public void remove_existingClient_removesClient() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.remove(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" public void setClients_nullUniqueClientList_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClients((UniqueClientList) null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" public void setClients_uniqueClientList_replacesOwnListWithProvidedUniqueClientList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClients(expectedUniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":" public void setClients_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClients((List\u003cClient\u003e) null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" public void setClients_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" List\u003cClient\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClients(personList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" public void setClients_listWithDuplicateClients_throwsDuplicateClientException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" List\u003cClient\u003e listWithDuplicateClients \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e uniqueClientList.setClients(listWithDuplicateClients));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":" -\u003e uniqueClientList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" assertEquals(uniqueClientList.asUnmodifiableObservableList().toString(), uniqueClientList.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":175}},{"path":"src/test/java/seedu/address/model/client/exceptions/ClientNotFoundExceptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"public class ClientNotFoundExceptionTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" public void clientNotFoundException_isThrown() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" // Test that the ClientNotFoundException can be thrown","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ClientNotFoundException.class, () -\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" throw new ClientNotFoundException();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":16}},{"path":"src/test/java/seedu/address/model/client/exceptions/DuplicateClientExceptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"public class DuplicateClientExceptionTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" public void duplicateClientException_isThrown() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" // Test that DuplicateClientException is thrown","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public void duplicateClientException_hasCorrectMessage() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" // Test that the message in DuplicateClientException is as expected","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" Exception exception \u003d assertThrows(DuplicateClientException.class, () -\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" assertEquals(\"Operation would result in duplicate persons\", exception.getMessage());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":26}},{"path":"src/test/java/seedu/address/model/property/PostalCodeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"public class PostalCodeTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e new PostalCode(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" String invalidCode \u003d \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new PostalCode(invalidCode));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public void isValidPostalCode() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" // null name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e PostalCode.isValidPostalCode(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" // invalid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"\")); // empty string","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\" \")); // spaces only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"-00000\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"00\u0026000\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"00.000\")); // contains decimal characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"00000\")); // contains less than 6 character","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"0000000\")); // contains more than 6 character","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"-000001\")); // negative number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" // valid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(PostalCode.isValidPostalCode(\"000000\")); // alphabets only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(PostalCode.isValidPostalCode(\"123456\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(PostalCode.isValidPostalCode(\"999999\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" PostalCode postalCode \u003d new PostalCode(VALID_POSTALCODE_BEDOK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(postalCode.equals(new PostalCode(VALID_POSTALCODE_BEDOK)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(postalCode.equals(postalCode));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(postalCode.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(postalCode.equals(5.0f));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(postalCode.equals(new PostalCode(VALID_POSTALCODE_ADMIRALTY)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":64}},{"path":"src/test/java/seedu/address/model/property/PropertyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public void isSameProperty() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(ADMIRALTY.isSameProperty(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" // same name, all other attributes different -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" Property editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" .withUnit(VALID_UNIT_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" // different postal code -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" // different unit -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withUnit(VALID_UNIT_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" Property admiraltyCopy \u003d new PropertyBuilder(ADMIRALTY).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(ADMIRALTY.equals(admiraltyCopy));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(ADMIRALTY.equals(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(5));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(BEDOK));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" // different postal code -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" Property editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" // different unit -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withUnit(VALID_UNIT_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" String expected \u003d Property.class.getCanonicalName() + \"{postalCode\u003d\" + ADMIRALTY.getPostalCode()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" + \", unit\u003d\" + ADMIRALTY.getUnit() + \"}\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expected, ADMIRALTY.toString());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":72}},{"path":"src/test/java/seedu/address/model/property/UniquePropertiesListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.BEDOK;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.DuplicatePropertyException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.PropertyNotFoundException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"public class UniquePropertiesListTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" private final UniquePropertiesList uniquePropertyList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.contains(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" public void contains_propertyNotInList_returnsFalse() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(uniquePropertyList.contains(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" public void contains_propertyInList_returnsTrue() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(uniquePropertyList.contains(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" public void contains_propertyWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" Property editedAlice \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(uniquePropertyList.contains(editedAlice));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" public void add_nullProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.add(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullTargetProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperty(null, ADMIRALTY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullEditedProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperty(ADMIRALTY, null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_targetPropertyNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(PropertyNotFoundException.class, () -\u003e uniquePropertyList.setProperty(ADMIRALTY, ADMIRALTY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_editedPropertyIsSameProperty_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperty(ADMIRALTY, ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" Property editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_ADMIRALTY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" .withUnit(VALID_UNIT_ADMIRALTY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" .build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperty(ADMIRALTY, editedAdmiralty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(editedAdmiralty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_editedPropertyHasDifferentIdentity_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperty(ADMIRALTY, BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_editedPropertyHasNonUniqueIdentity_throwsDuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DuplicatePropertyException.class, () -\u003e uniquePropertyList.setProperty(ADMIRALTY, BEDOK));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" // COMMENTED CODE IS FOR PERSON IMPLEMENTING DELETE FUNCTIONAILITY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" // @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":" // public void remove_nullProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":" // assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.remove(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" // }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" // @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":" // public void remove_propertyDoesNotExist_throwsPropertyNotFoundException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":" // assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":" // }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Virusrwj223"},"content":" // @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Virusrwj223"},"content":" // public void remove_existingProperty_removesProperty() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Virusrwj223"},"content":" // uniquePersonList.add(ALICE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Virusrwj223"},"content":" // uniquePersonList.remove(ALICE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Virusrwj223"},"content":" // UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Virusrwj223"},"content":" // assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Virusrwj223"},"content":" // }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullUniquePropertyList_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperties((UniquePropertiesList) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_uniquePropertyList_replacesOwnListWithProvidedUniquePropertyList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperties(expectedUniquePropertiesList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperties((List\u003cProperty\u003e) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Virusrwj223"},"content":" List\u003cProperty\u003e propertyList \u003d Collections.singletonList(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperties(propertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_listWithDuplicateProperty_throwsDuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"Virusrwj223"},"content":" List\u003cProperty\u003e listWithDuplicateProperties \u003d Arrays.asList(ADMIRALTY, ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DuplicatePropertyException.class, () -\u003e uniquePropertyList","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Virusrwj223"},"content":" .setProperties(listWithDuplicateProperties));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Virusrwj223"},"content":" public void add_duplicateProperty_throwsDuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DuplicatePropertyException.class, () -\u003e uniquePropertyList.add(ADMIRALTY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Virusrwj223"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Virusrwj223"},"content":" -\u003e uniquePropertyList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":176}},{"path":"src/test/java/seedu/address/model/property/UnitTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"public class UnitTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e new Unit(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" String invalidCode \u003d \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Unit(invalidCode));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public void isValidUnit() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" // null name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e Unit.isValidUnit(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" // invalid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"\")); // empty string","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\" \")); // spaces only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"-00-00\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"00 00\")); // wrong delimiter","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"00\u002600\")); // wrong character","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"0-00\")); // few digits in level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"00-0\")); // few digits in unit","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"0-0\")); // few digits in unit and level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"149-1111\")); // Too tall structure","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"148-111111\")); // Too many units, limited to 6","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"149-11111119\")); // Too tall structure and too many units","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" // valid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(Unit.isValidUnit(\"00-00\")); // alphabets only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(Unit.isValidUnit(\"01-01\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(Unit.isValidUnit(\"148-11111\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" Unit unit \u003d new Unit(VALID_UNIT_BEDOK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(unit.equals(new Unit(VALID_UNIT_BEDOK)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(unit.equals(unit));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(unit.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(unit.equals(5.0f));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(unit.equals(new Unit(VALID_UNIT_ADMIRALTY)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":67}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedClientTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.storage.JsonAdaptedClient.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.ALICE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class JsonAdaptedClientTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_TYPE \u003d \"invalidType\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_NAME \u003d ALICE.getName().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_PHONE \u003d ALICE.getPhone().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_EMAIL \u003d ALICE.getEmail().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_TYPE \u003d ALICE instanceof Buyer ? \"BUYER\" : \"SELLER\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_validClientDetails_returnsClient() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" assertEquals(ALICE, client.toModelType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(null, VALID_PHONE, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, null, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, VALID_PHONE, null, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidType_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80}},{"path":"src/test/java/seedu/address/storage/JsonSerializableClientBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.TypicalClients;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class JsonSerializableClientBookTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableClientBookTest\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" private static final Path TYPICAL_CLIENTS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalClientClientBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private static final Path INVALID_CLIENT_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidClientClientBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private static final Path DUPLICATE_CLIENT_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateClientClientBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_typicalClientsFile_success() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_CLIENTS_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" ClientBook clientBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" ClientBook typicalClientsClientBook \u003d TypicalClients.getTypicalClientBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertEquals(clientBookFromFile, typicalClientsClientBook);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidClientFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_CLIENT_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_duplicateClients_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_CLIENT_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, JsonSerializableClientBook.MESSAGE_DUPLICATE_CLIENT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":46}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage clientBookStorage \u003d new JsonClientBookStorage(getTempFilePath(\"cb\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage, clientBookStorage);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonUserPrefsStorage} class. More extensive testing of UserPref saving/reading is done in","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonUserPrefsStorageTest}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonAddressBookStorage} class. More extensive testing of AddressBook saving/reading is done in","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonAddressBookStorageTest}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" public void clientBookReadSave() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" /*","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonClientBookStorage} class. More extensive testing of ClientBook saving/reading is done in","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonClientBookStorageTest}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" ClientBook original \u003d getTypicalClientBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" storageManager.saveClientBook(original);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" ReadOnlyClientBook retrieved \u003d storageManager.readClientBook().get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" assertEquals(original, new ClientBook(retrieved));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" public void getClientBookFilePath() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" assertNotNull(storageManager.getClientBookFilePath());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":34,"-":61}},{"path":"src/test/java/seedu/address/testutil/ClientBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * A utility class to help with building Clientbook objects.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" * {@code ClientBook cb \u003d new ClientBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"public class ClientBookBuilder {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" private ClientBook clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" public ClientBookBuilder() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" clientBook \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public ClientBookBuilder(ClientBook clientBook) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" this.clientBook \u003d clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Adds a new {@code Person} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" public ClientBookBuilder withClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" clientBook.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public ClientBook build() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" return clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":34}},{"path":"src/test/java/seedu/address/testutil/ClientBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * A utility class to help with building Client objects.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"public class ClientBuilder {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private Name name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private Phone phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private Email email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * Creates a {@code ClientBuilder} with the default details.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Initializes the ClientBuilder with the data of {@code ClientToCopy}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder(Client personToCopy) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Sets the {@code Name} of the {@code Client} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder withName(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" this.name \u003d new seedu.address.model.client.Name(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" * Sets the {@code Phone} of the {@code Client} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder withPhone(String phone) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" this.phone \u003d new seedu.address.model.client.Phone(phone);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" * Sets the {@code Email} of the {@code Client} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder withEmail(String email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" this.email \u003d new seedu.address.model.client.Email(email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" public Buyer buildBuyer() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" return new Buyer(name, phone, email);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public Seller buildSeller() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" return new Seller(name, phone, email);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":73}},{"path":"src/test/java/seedu/address/testutil/PropertyBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" * A utility class to help with building Property objects.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyBuilder {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" public static final String DEFAULT_POSTALCODE \u003d \"123456\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" public static final String DEFAULT_UNIT \u003d \"08-20\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" private Unit unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" private PostalCode postalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" unit \u003d new Unit(DEFAULT_UNIT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" postalCode \u003d new PostalCode(DEFAULT_POSTALCODE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" * Initializes the PropertyBuilder with the data of {@code propertyToCopy}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder(Property propertyToCopy) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" unit \u003d propertyToCopy.getUnit();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" postalCode \u003d propertyToCopy.getPostalCode();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" * Sets the {@code Unit} of the {@code Property} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder withUnit(String unit) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" this.unit \u003d new Unit(unit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" * Sets the {@code PostalCode} of the {@code Property} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder withPostalCode(String postalCode) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" this.postalCode \u003d new PostalCode(postalCode);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" public Property build() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" return new Property(postalCode, unit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":52}},{"path":"src/test/java/seedu/address/testutil/TypicalClients.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * A utility class containing a list of {@code Client} objects to be used in tests.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"public class TypicalClients {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" public static final Client ALICE \u003d new ClientBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" .buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" public static final Client BENSON \u003d new ClientBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" .buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public static final Client CARL \u003d new ClientBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"heinz@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public static final Client DANIEL \u003d new ClientBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"cornelia@example.com\").buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public static final Client ELLE \u003d new ClientBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"werner@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public static final Client FIONA \u003d new ClientBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"lydia@example.com\").buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public static final Client GEORGE \u003d new ClientBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"anna@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Manually added","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" public static final Client HOON \u003d new ClientBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"stefan@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public static final Client IDA \u003d new ClientBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"hans@example.com\").buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" public static final Client AMY \u003d new ClientBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" .withEmail(VALID_EMAIL_AMY).buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public static final Client BOB \u003d new ClientBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" .buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" private TypicalClients() {} // prevents instantiation","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" * Returns an {@code ClientBook} with all the typical buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" public static ClientBook getTypicalClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" ClientBook cb \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" for (Client client : getTypicalClients()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" cb.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return cb;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public static List\u003cClient\u003e getTypicalClients() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":68}},{"path":"src/test/java/seedu/address/testutil/TypicalProperty.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * A utility class containing a list of {@code Property} objects to be used in tests.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"public class TypicalProperty {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" public static final Property ADMIRALTY \u003d new PropertyBuilder().withUnit(\"02-22\").withPostalCode(\"654321\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" public static final Property BEDOK \u003d new PropertyBuilder().withUnit(\"11-12\").withPostalCode(\"321456\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" public static PropertyBook getTypicalPropertyBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook ab \u003d new PropertyBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" for (Property person : getTypicalProperties()) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" ab.addProperty(person);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" return ab;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" public static List\u003cProperty\u003e getTypicalProperties() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ADMIRALTY, BEDOK));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":33}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-T16-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-T16-2/tp/actions)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"* This is **ClientGrid**.\u003cbr\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" Example usages:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * as a one stop e-book for property agents to store the contacts of clients and their relevant descriptions","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"* For the detailed documentation of this project, see the **[ClientGrid Product Website](https://ay2425s1-cs2103t-t16-2.github.io/tp/)**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":4,"thony-ui":1,"-":4}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027seedu.address.Main\u0027","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" testImplementation group: \u0027org.mockito\u0027, name: \u0027mockito-core\u0027, version: \u00275.4.0\u0027","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" archiveFileName \u003d \u0027addressbook.jar\u0027","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"-":72}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"You can reach us at our emails: ","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"- `E1113234@u.nus.edu.sg`","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"- `kheehou.yong@u.nus.edu`","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"- `e1113214@u.nus.edu`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"- `e1155920@u.nus.edu`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"- `tan_shixin@u.nus.edu`","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":"### Tan Shi Xin","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":"\u003cimg src\u003d\"images/apollo-tan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":"[[github](http://github.com/apollo-tan)]","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":"* Role: Project Advisor. Handle the list feature and its documentation","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":"### Anthony Hermanto","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":"![Anthony picture](./images/thony-ui.png)","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":"[[github](https://github.com/thony-ui)]","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":"[[portfolio](https://www.anthonyhermanto.com)]","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"* Role: Team Lead","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":"* Responsibilities: Manage the team. Handle the logic for delete commands. (delete buyer and delete seller)","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"### Yong Khee Hou","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"![Khee Hou picture](./images/yongkheehou.png)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"[[github](https://github.com/yongkheehou)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"* Responsibilities: Ensure well-maintained documentation for the project. Handle command to add clients (buyers/ sellers).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"### Hrishiraj Mandal","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"\u003cimg src\u003d\"images/virusrwj223.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"[[github](https://github.com/Virusrwj223)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"[[portfolio](https://virusrwj223.github.io/hm)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":"[[linkedin](https://www.linkedin.com/in/hrishiraj-mandal)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"* Role: Tester","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time. Handle add property to database","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"### Wee Zhuo Lin","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"\u003cimg src\u003d\"images/jolwnn.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"[[GitHub](https://github.com/jolwnn)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"[[portfolio](https://jolynn-wee.vercel.app)]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"* Role: Integration","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":"* Responsibilities: In charge of versioning of the code, maintaining the code repository, integrating various parts of ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"* the software to create a whole. Handle delete property commands and documentation.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"### Johnny Doe","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"* Responsibilities: Data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"### Jean Doe","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"* Responsibilities: Dev Ops + Threading","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"### James Doe","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cimg src\u003d\"images/johndoe.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"[[github](http://github.com/johndoe)]","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"* Role: Developer","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"yongkheehou":19,"Virusrwj223":7,"apollo-tan":5,"thony-ui":7,"-":60}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"thony-ui"},"content":"* Real estate agent who needs to manage a significant number of clients and properties.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"thony-ui"},"content":"* prefer desktop apps over other types.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"thony-ui"},"content":"* can type fast.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"thony-ui"},"content":"* prefers typing to mouse interactions.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"thony-ui"},"content":"* is reasonably comfortable using CLI apps.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"thony-ui"},"content":"**Value proposition**:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"thony-ui"},"content":"ClientGrid is an address book designed for real estate agents to efficiently manage client contacts, including buyers and sellers. It provides a streamlined way to organize client data and monitor properties the agent is in charge of while maintaining core address book functionality.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"apollo-tan"},"content":"|----------|-------------------|------------------------------------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"yongkheehou"},"content":"| `* * *` | real estate agent | add a new client (buyer or seller) to ClientGrid | keep all their contact information organized in one place","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"thony-ui"},"content":"| `* * *` | real estate agent | delete a client (buyer or seller) from ClientGrid | keep all their contact information organized in one place |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"thony-ui"},"content":"| `* * *` | real estate agent | add new properties to client grid | keep track of my client\u0027s property details |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"jolwnn"},"content":"| `* * *` | real estate agent | delete a property entry from ClientGrid | remove entries that I no longer need |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"apollo-tan"},"content":"| `* * *` | real estate agent | list information about properties | easily manage my portfolio of available properties |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"apollo-tan"},"content":"| `* * *` | real estate agent | list information about buyers | match buyers with suitable properties based on their preferences |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"apollo-tan"},"content":"| `* * *` | real estate agent | list information about sellers | manage relationships and property listings efficiently |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"thony-ui"},"content":"| `* *` | real estate agent | indicate that a buyer wants to buy property X at Y price | keep track of the clients that are involved in the transaction |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"thony-ui"},"content":"| `* *` | real estate agent | indicate that a seller wants to sell property X at Y price | keep track of the clients that are involved in the transaction |","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"yongkheehou"},"content":"(For all use cases below, the **System** is the `ClientGrid` and the **Actor** is the `real estate agent`, unless specified otherwise)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"yongkheehou"},"content":"**Use case: UC1 - Add Client (Buyer or Seller)**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"yongkheehou"},"content":"MSS:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"yongkheehou"},"content":"1. Real estate agent requests to add a buyer/ seller to ClientGrid and passes in the buyer/ seller\u0027s name, phone number and email.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"yongkheehou"},"content":"2. ClientGrid will add the buyer/ seller with the name, phone number, and email specified by the real estate agent.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"jolwnn"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"yongkheehou"},"content":"Extensions:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"yongkheehou"},"content":"* 1a. ClientGrid detects an error in the name/ phone number/ email format provided by the real estate agent.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"yongkheehou"},"content":" * 1a1. ClientGrid requests for the correct data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"yongkheehou"},"content":" * 1a2. Real estate agent enters new data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"yongkheehou"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"yongkheehou"},"content":" ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"yongkheehou"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":" ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"thony-ui"},"content":"**Use case: UC2 - Delete Client**","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"thony-ui"},"content":"MSS:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"thony-ui"},"content":"1. Real estate agent requests to delete a buyer or seller based on their phone number.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"thony-ui"},"content":"2. ClientGrid will delete the respective client based on the phone number.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"jolwnn"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"thony-ui"},"content":"Extensions:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"yongkheehou"},"content":"* 1a. ClientGrid detects an error in the phone number format provided by the real estate agent .","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"yongkheehou"},"content":" * 1a1. ClientGrid requests for the correct data ","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"yongkheehou"},"content":" * 1a2. Real estate agent enters new data","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"yongkheehou"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"yongkheehou"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"Virusrwj223"},"content":"**Use case: UC3 - Add a property**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"Virusrwj223"},"content":"1. User inputs details of property","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"yongkheehou"},"content":"2. System outputs success message","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"Virusrwj223"},"content":"* 1a. Invalid command detail symbols","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"Virusrwj223"},"content":" * 1a1. System outputs error message in user console","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"thony-ui"},"content":" Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"Virusrwj223"},"content":"* 1b. Postal code number contains invalid symbols and format typical in Singapore","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"Virusrwj223"},"content":" * 1b1. System outputs error message in user console","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"Virusrwj223"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"Virusrwj223"},"content":"* 1c. Unit number contains invalid symbols and format","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"Virusrwj223"},"content":" * 1c1. System outputs error message in user console","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"Virusrwj223"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"jolwnn"},"content":"**Use case: UC4 - Delete Property**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"jolwnn"},"content":"Guarantees:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"jolwnn"},"content":"* If property listing was in the database originally, it would be removed from property database with no side effects.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"jolwnn"},"content":"MSS:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"jolwnn"},"content":"1. Real estate agent requests to delete a property listing based on the property’s postal code and unit number.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"jolwnn"},"content":"2. ClientGrid will delete the respective property listing and indicate success.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"jolwnn"},"content":"Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"thony-ui"},"content":"Extensions:","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"yongkheehou"},"content":"* 1a. ClientGrid detects an error in the postal code or unit number format provided by the real estate agent, .","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"yongkheehou"},"content":" * 1a1. ClientGrid requests for the correct data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"yongkheehou"},"content":" * 1a2. Real estate agent enters new data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"yongkheehou"},"content":" * Steps 1a1-1a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"yongkheehou"},"content":" * Use case resumes from step 2.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"yongkheehou"},"content":"* 1b. ClientGrid is unable to find a matching property listing entry in the database.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"yongkheehou"},"content":" * 1b1. ClientGrid informs real estate agent that the property listing does not exist in the database.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"yongkheehou"},"content":" * Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"thony-ui"},"content":"**Use case: UC5 - List buyers, sellers, clients or properties**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"apollo-tan"},"content":"MSS:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"apollo-tan"},"content":"1. Real Estate Agent requests to view a list of buyers, sellers, clients or properties","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"apollo-tan"},"content":"2. ClientGrid will respond with the corresponding list","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"thony-ui"},"content":"Use case ends.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"yongkheehou"},"content":"2. Should be able to hold up to 1000 clients and 500 properties without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"yongkheehou"},"content":"4. The client and property databases should be updated after every command successfully executed by ClientGrid.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"Virusrwj223"},"content":"5. Should be able to handle case of corrupted file","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"yongkheehou"},"content":"* **Clients**: Buyers or Sellers of properties the real estate agent is managing","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"Virusrwj223"},"content":"* **Corrupted file**: Missing file and invalid data","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"yongkheehou":31,"jolwnn":17,"Virusrwj223":16,"apollo-tan":9,"thony-ui":34,"-":376}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eClientGrid\u003c/a\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103T-T16-2/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"thony-ui":2,"-":65}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"# ClientGrid","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-T16-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-T16-2/tp/actions)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"[![codecov](https://codecov.io/gh/AY2425S1-CS2103T-T16-2/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/AY2425S1-CS2103T-T16-2/tp)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"**ClientGrid is a desktop application for managing your contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"* If you are interested in using ClientGrid, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"* If you are interested about developing ClientGrid, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"* This project is based on the ClientGrid-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"yongkheehou":4,"thony-ui":3,"-":15}},{"path":"setup-hooks.sh","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"#!/bin/sh","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"# Copy pre-commit hook to the .git/hooks directory","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"cp hooks/pre-commit .git/hooks/pre-commit","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"# Make the pre-commit hook executable","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"chmod +x .git/hooks/pre-commit","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"echo \"Git hooks installed.\"","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"thony-ui":9}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.storage.ClientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.storage.JsonClientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.storage.JsonPropertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.storage.PropertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing AddressBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" PropertyBookStorage propertyBookStorage \u003d new JsonPropertyBookStorage(userPrefs.getPropertyBookFilePath());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" ClientBookStorage clientBookStorage \u003d new JsonClientBookStorage(userPrefs.getClientBookFilePath());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, propertyBookStorage, clientBookStorage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cReadOnlyPropertyBook\u003e propertyBookOptional;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e clientBookOptional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook initialPropertyData;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" ReadOnlyClientBook initialClientData;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" try {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" propertyBookOptional \u003d storage.readPropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":" if (!propertyBookOptional.isPresent()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" initialPropertyData \u003d propertyBookOptional.orElseGet(SampleDataUtil::getSamplePropertyBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":" logger.warning(\"Data file at \" + storage.getPropertyBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":" + \" Will be starting with an empty PropertyBook.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Virusrwj223"},"content":" initialPropertyData \u003d new PropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" clientBookOptional \u003d storage.readClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" if (!clientBookOptional.isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" logger.info(\"Creating a new client data file \" + storage.getClientBookFilePath()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" + \" populated with a sample ClientBook.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" initialClientData \u003d clientBookOptional.orElseGet(SampleDataUtil::getSampleClientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" System.out.println(initialClientData);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" logger.warning(\"Data file at \" + storage.getClientBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" + \" Will be starting with an empty ClientBook.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" initialClientData \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" return new ModelManager(initialData, userPrefs, initialPropertyData, initialClientData);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping AddressBook ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":21,"Virusrwj223":22,"-":184}},{"path":"src/main/java/seedu/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @see seedu.address.model.Model#getAddressBook()","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered list of persons */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" /** Returns an unmodifiable view of the filtered list of clients (containing both buyers and sellers) */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" ObservableList\u003cClient\u003e getFilteredClientList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"yongkheehou":4,"-":50}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" storage.saveClientBook(model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" storage.savePropertyBook(model.getPropertyBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" return model.getFilteredClientList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"yongkheehou":7,"Virusrwj223":1,"-":88}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.LinkedHashSet;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.ClientTypes;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" .sorted() // Sorting the strings","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" .collect(Collectors.toCollection(LinkedHashSet::new)); // To maintain the sorted order","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String format(Person person) {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"thony-ui"},"content":" * Formats the {@code client} for display to the user.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" public static String format(Client client) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"thony-ui"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" builder.append(client instanceof Buyer ? ClientTypes.BUYER.toString() + \"; \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" : ClientTypes.SELLER.toString() + \"; \")","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" .append(client.getName())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"thony-ui"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" .append(client.getPhone())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"thony-ui"},"content":" .append(\"; Email: \")","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" .append(client.getEmail());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"thony-ui"},"content":" return builder.toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" * Formats the {@code property} for display to the user.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" public static String format(Property property) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" builder.append(\"PostalCode: \")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" .append(property.getPostalCode())","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" .append(\"; Unit: \")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" .append(property.getUnit());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" return builder.toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"yongkheehou":12,"Virusrwj223":13,"thony-ui":9,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/AddBuyerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Adds a {@code Buyer} to the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Extends {@link AddClientCommand} and utilizes its functionality to add a specific type of client: {@code Buyer}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"public class AddBuyerCommand extends AddClientCommand {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /** The command word used to trigger the AddBuyerCommand. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public static final String COMMAND_WORD \u003d \"addbuyer\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" * Describes the format and usage of the addbuyer command.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Includes the command word and expected parameters inherited from {@link AddClientCommand#CLIENT_PARAMETERS}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a buyer to the address book. \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" + AddClientCommand.CLIENT_PARAMETERS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" /** Success message for adding a new buyer, with a placeholder for the buyer\u0027s details. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_SUCCESS_BUYER \u003d \"New buyer added: %1$s\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" /** Error message shown when attempting to add a duplicate buyer. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_DUPLICATE_BUYER \u003d \"This buyer already exists in the address book\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code AddBuyerCommand} to add the specified {@code Buyer}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * @param buyer The {@code Buyer} to be added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" public AddBuyerCommand(Buyer buyer) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" super(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Executes the AddBuyerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Adds the buyer to the model if the buyer does not already exist in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * @param model The model which contains the address book data.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" * @return A {@link CommandResult} with a success message if the buyer was added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" * @throws CommandException if the buyer already exists in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (model.hasClient(toAdd) \u0026\u0026 toAdd instanceof Buyer) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" throw new CommandException(MESSAGE_DUPLICATE_BUYER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" model.addClient(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_BUYER, Messages.format(toAdd)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" * Checks if another object is equal to this AddBuyerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both objects are AddBuyerCommand instances and their buyer clients are equal.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" * @param other The object to be compared with this AddBuyerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" * @return True if both commands are equal, otherwise false.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof AddBuyerCommand)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand otherAddCommand \u003d (AddBuyerCommand) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" return this.toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":78}},{"path":"src/main/java/seedu/address/logic/commands/AddClientCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Represents an abstract command to add a {@link Client} to the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * This class is designed to be extended by specific commands that add different types of clients,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" * such as buyers or sellers.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public abstract class AddClientCommand extends Command {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * A string describing the expected parameters for adding a client.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" * Includes name, phone number, and email.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public static final String CLIENT_PARAMETERS \u003d PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_EMAIL + \"EMAIL\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" /** The client to be added to the address book. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" protected final Client toAdd;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code AddClientCommand} to add the specified {@code Client}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" * @param client The client to be added. Must not be null.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public AddClientCommand(Client client) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(client);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" this.toAdd \u003d client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Returns the string representation of this AddClientCommand, showing the client to be added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * The string is generated using {@link ToStringBuilder}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * @return A string representation of the AddClientCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":51}},{"path":"src/main/java/seedu/address/logic/commands/AddPropertyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" * Adds a {@code Property} to the address book.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" * Extends {@link AddPropertyCommand} and uses its functionality to add a specific type of property: {@code Property}.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"public class AddPropertyCommand extends Command {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public static final String COMMAND_WORD \u003d \"addproperty\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a property to the address book. \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" + PREFIX_POSTALCODE + \"POSTALCODE \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" + PREFIX_UNITNUMBER + \"UNIT \";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New property added: %1$s\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This property already exists in the address book\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" private final Property toAdd;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" public AddPropertyCommand(Property property) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" toAdd \u003d property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" * Executes the AddPropertyCommand.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" * Adds the property to the model if the property does not already exist in the address book.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" * @param model The model which contains the address book data.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" * @return A {@link CommandResult} with a success message if the property was added.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" * @throws CommandException if the seller already exists in the address book.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" if (model.hasProperty(toAdd)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" model.addProperty(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof AddPropertyCommand)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand otherAddCommand \u003d (AddPropertyCommand) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":79}},{"path":"src/main/java/seedu/address/logic/commands/AddSellerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Adds a {@code Seller} to the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Extends {@link AddClientCommand} and uses its functionality to add a specific type of client: {@code Seller}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"public class AddSellerCommand extends AddClientCommand {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /** The command word used to trigger the AddSellerCommand. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public static final String COMMAND_WORD \u003d \"addseller\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" * Describes the format and usage of the addseller command.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Includes the command word and expected parameters inherited from {@link AddClientCommand#CLIENT_PARAMETERS}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a seller to the address book. \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" + AddClientCommand.CLIENT_PARAMETERS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" /** Success message for adding a new seller, with a placeholder for the seller\u0027s details. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_SUCCESS_SELLER \u003d \"New seller added: %1$s\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" /** Error message shown when attempting to add a duplicate seller. */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_DUPLICATE_SELLER \u003d \"This seller already exists in the address book\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code AddSellerCommand} to add the specified {@code Seller}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * @param seller The {@code Seller} to be added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" public AddSellerCommand(Seller seller) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" super(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Executes the AddSellerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Adds the seller to the model if the seller does not already exist in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * @param model The model which contains the address book data.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" * @return A {@link CommandResult} with a success message if the seller was added.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" * @throws CommandException if the seller already exists in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (model.hasClient(toAdd)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" if (toAdd instanceof Seller) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" throw new CommandException(MESSAGE_DUPLICATE_SELLER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" model.addClient(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS_SELLER, Messages.format(toAdd)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" * Checks if another object is equal to this AddSellerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both objects are AddSellerCommand instances and their seller clients are equal.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" * @param other The object to be compared with this AddSellerCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" * @return True if both commands are equal, otherwise false.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof AddSellerCommand)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand otherAddCommand \u003d (AddSellerCommand) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" return this.toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80}},{"path":"src/main/java/seedu/address/logic/commands/DeleteBuyerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":" * Represents a command to delete a buyer in the buyer management system.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommand extends Command {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" /** The command word for this specific action. */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" public static final String COMMAND_WORD \u003d \"deletebuyer\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"phoneNumber: %1$s\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" + \": Deletes the buyer identified by the phone number used in the displayed person list.\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" + \"Parameters: phone number (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + PREFIX_PHONE + \"81621234\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Buyer: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" private final Phone phoneNumber;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" * Constructs a {@code DeleteBuyerCommand} with the specified phone number.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" * @param phoneNumber The phone number of the buyer to delete.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" public DeleteBuyerCommand(Phone phoneNumber) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" requireAllNonNull(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" this.phoneNumber \u003d phoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" * Executes the delete buyer command and removes the buyer from the model.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" * @param model The model which the command should operate on.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" * @return A {@code CommandResult} object representing the result of the delete operation.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" * @throws CommandException If the buyer cannot be found or deleted.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" // Search for the person with the specified phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isBuyer)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new CommandException(String.format(\"Buyer not found. \", phoneNumber)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":" model.deleteClient(personToDelete);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"thony-ui"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"thony-ui"},"content":" * Checks if this {@code DeleteBuyerCommand} is equal to another object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"thony-ui"},"content":" * @param other The object to compare with this command.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"thony-ui"},"content":" * @return {@code true} if the other object is an instance of {@code DeleteBuyerCommand} with the same phone number.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"thony-ui"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"thony-ui"},"content":" // short circuit if same object","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"thony-ui"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"thony-ui"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"thony-ui"},"content":" if (!(other instanceof DeleteBuyerCommand)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"thony-ui"},"content":" // state check","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand d \u003d (DeleteBuyerCommand) other;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":" return this.phoneNumber.equals(d.phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":75}},{"path":"src/main/java/seedu/address/logic/commands/DeletePropertyCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":" * Deletes a property using its postal code and unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":" public static final String COMMAND_WORD \u003d \"deleteunit\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":" + \": Deletes the property unit identified by its postal code and unit number.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" + PREFIX_POSTALCODE + \"POSTAL_CODE (must follow the Singapore postal code format i.e. be a 6 digit integer \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" + \"between 000000 to 999999) \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":" + PREFIX_UNITNUMBER + \"UNIT_NUMBER (in the format XXX-XXX) \\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" + PREFIX_POSTALCODE + \"118420 \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":" + PREFIX_UNITNUMBER + \"08-08 \";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" public static final String MESSAGE_DELETE_PROPERTY_SUCCESS \u003d \"Deleted property: %1$s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":" private final PostalCode postalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":" private final Unit unitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" * Constructs a {@code DeletePropertyCommand} with the specified postal code and unit number to delete a property.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" * @param postalCode The postal code of the property to delete.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" * @param unitNumber The unit number of the property to delete.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" public DeletePropertyCommand(PostalCode postalCode, Unit unitNumber) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" this.postalCode \u003d postalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" this.unitNumber \u003d unitNumber;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jolwnn"},"content":" return new CommandResult(MESSAGE_DELETE_PROPERTY_SUCCESS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jolwnn"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jolwnn"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jolwnn"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jolwnn"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jolwnn"},"content":" if (!(other instanceof DeletePropertyCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jolwnn"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand otherDeletePropertyCommand \u003d (DeletePropertyCommand) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jolwnn"},"content":" return postalCode.equals(otherDeletePropertyCommand.postalCode)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jolwnn"},"content":" \u0026\u0026 unitNumber.equals(otherDeletePropertyCommand.unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jolwnn"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jolwnn"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jolwnn"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jolwnn"},"content":" .add(\"postalCode\", postalCode)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jolwnn"},"content":" .add(\"unitNumber\", unitNumber)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jolwnn"},"content":" .toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":74}},{"path":"src/main/java/seedu/address/logic/commands/DeleteSellerCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":" * Represents a command to delete a seller in the seller management system.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommand extends Command {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" /** The command word for this specific action. */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" public static final String COMMAND_WORD \u003d \"deleteseller\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"phoneNumber: %1$s\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" + \": Deletes the seller identified by the phone number used in the displayed person list.\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" + \"Parameters: phone number (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + PREFIX_PHONE + \"81621234\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Seller: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" private final Phone phoneNumber;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" * Constructs a {@code DeleteSellerCommand} with the specified phone number.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" * @param phoneNumber The phone number of the buyer to delete.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" public DeleteSellerCommand(Phone phoneNumber) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" requireAllNonNull(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" this.phoneNumber \u003d phoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" * Executes the delete seller command and removes the seller from the model.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" * @param model The model which the command should operate on.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" * @return A {@code CommandResult} object representing the result of the delete operation.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" * @throws CommandException If the buyer cannot be found or deleted.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" // Search for the person with the specified phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isSeller)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new CommandException(String.format(\"Seller not found. \", phoneNumber)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":" model.deleteClient(personToDelete);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"thony-ui"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"thony-ui"},"content":" * Checks if this {@code DeleteSellerCommand} is equal to another object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"thony-ui"},"content":" * @param other The object to compare with this command.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"thony-ui"},"content":" * @return {@code true} if the other object is an instance of {@code DeleteSellerCommand} with the same phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"thony-ui"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"thony-ui"},"content":" // short circuit if same object","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"thony-ui"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"thony-ui"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"thony-ui"},"content":" if (!(other instanceof DeleteSellerCommand)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"thony-ui"},"content":" // state check","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand d \u003d (DeleteSellerCommand) other;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"thony-ui"},"content":" return this.phoneNumber.equals(d.phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":74}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Lists all persons in the address book to the user.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class ListCommand extends Command {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":" * Represents the various types of entities that can be listed in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":" * This enum is used to specify the kind of records a property agent wishes to list,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" * allowing for easy differentiation between different categories.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" * \u003cp\u003ePossible values include:\u003c/p\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" * \u003cul\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" * \u003cli\u003e{@link #BUYERS} - Represents buyers in the database.\u003c/li\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" * \u003cli\u003e{@link #SELLERS} - Represents sellers in the database.\u003c/li\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" * \u003cli\u003e{@link #CLIENTS} - Represents clients in the database, which includes both buyers and sellers.\u003c/li\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" * \u003cli\u003e{@link #PROPERTIES} - Represents properties in the database.\u003c/li\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" public static enum Key {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" BUYERS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":" SELLERS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" CLIENTS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" PROPERTIES;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Lists all existing properties, sellers, buyers, \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" + \"or clients in the database.\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" + \"Command format: \" + COMMAND_WORD + \" k/KEY\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" + \"Example commands:\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" + \"1. List all the buyers: \" + COMMAND_WORD + \" k/buyers\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" + \"2. List all the properties: \" + COMMAND_WORD + \" k/properties\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" + \"\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" + \"Parameter considerations:\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" + \"The key must be one of the following: \\\"buyers\\\", \\\"sellers\\\", \\\"clients\\\", or \\\"properties\\\".\\n\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" + \"Only these four types of records are stored in the database.\\n\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":" //TODO modify this to actually show the correct thing","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all %1$s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" private final Key key;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":" // TODO:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"apollo-tan"},"content":" // 1. Store the String key to keep track of the thing (actually can use enum as well honestly)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"apollo-tan"},"content":" // 2. So your ListCommandParser will take the arguments and produce","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"apollo-tan"},"content":" // 3. Have a boolean isInvalidKey or something as true, because if that\u0027s the case, then return nothing","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"apollo-tan"},"content":" // 4. Otherwise, all you need to do it to fetch the correct String and then print the string out as pernormal","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"apollo-tan"},"content":" // (just call their toString honestly)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"apollo-tan"},"content":" // 2. Create a bunch of helper methods that aim to resolve this issue","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"apollo-tan"},"content":" // 3. If there\u0027s an error, that is if the key doesn\u0027t exist or something, then gg throw error","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"apollo-tan"},"content":" // 4. Otherwise, parse as per usual!","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"apollo-tan"},"content":" public ListCommand(Key key) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"apollo-tan"},"content":" this.key \u003d key;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"apollo-tan"},"content":" switch (key) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"apollo-tan"},"content":" case BUYERS:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"apollo-tan"},"content":" // Logic to list buyers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"apollo-tan"},"content":" System.out.println(\"Listing all buyers\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"apollo-tan"},"content":" case SELLERS:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"apollo-tan"},"content":" // Logic to list sellers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"apollo-tan"},"content":" System.out.println(\"Listing all sellers\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"apollo-tan"},"content":" case CLIENTS:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"apollo-tan"},"content":" // Logic to list clients","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"apollo-tan"},"content":" System.out.println(\"Listing all clients\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"apollo-tan"},"content":" case PROPERTIES:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"apollo-tan"},"content":" // Logic to list properties","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"apollo-tan"},"content":" System.out.println(\"Listing all properties\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"apollo-tan"},"content":" default:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"apollo-tan"},"content":" throw new AssertionError(\"Unexpected key: \" + key);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"apollo-tan"},"content":" return new CommandResult(String.format(ListCommand.MESSAGE_SUCCESS, this.key.toString().toLowerCase()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"apollo-tan":68,"-":20}},{"path":"src/main/java/seedu/address/logic/parser/AddBuyerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * Parses input arguments and creates a new {@link AddBuyerCommand} object.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * The parser processes the input string to extract the necessary parameters","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * (name, phone, and email) for creating a {@link Buyer}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"public class AddBuyerCommandParser implements Parser\u003cAddBuyerCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" * Parses the given {@code String} of arguments in the context of the {@link AddBuyerCommand}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * and returns an {@code AddBuyerCommand} object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" * @param args The input arguments from the user.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" * @return An {@code AddBuyerCommand} that adds a buyer based on the parsed input.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public AddBuyerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // Tokenize the input arguments based on the expected prefixes (name, phone, email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" // Check if all required prefixes are present and if the preamble is empty","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddBuyerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" // Verify there are no duplicate prefixes in the input","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" // Parse the name, phone, and email from the argument map","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d ParserUtil.parseClientName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d ParserUtil.parseClientPhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d ParserUtil.parseClientEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // Create a new Buyer using the parsed data","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" return new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" * @param argumentMultimap The argument multimap that holds the parsed arguments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" * @param prefixes The prefixes to check for presence.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" * @return True if all prefixes contain non-empty values, false otherwise.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":64}},{"path":"src/main/java/seedu/address/logic/parser/AddPropertyCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.AddPropertyCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" * Parses input arguments and creates a new {@link AddPropertyCommand} object.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * The parser processes the input string to extract the necessary parameters","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * (postalCode, Unit) for creating a {@link Property}.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"public class AddPropertyCommandParser implements Parser\u003cAddPropertyCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" public AddPropertyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_POSTALCODE, PREFIX_UNITNUMBER)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddPropertyCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" PostalCode postalCode \u003d ParserUtil.parsePostalCode(argMultimap.getValue(PREFIX_POSTALCODE).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" Unit unit \u003d ParserUtil.parseUnit(argMultimap.getValue(PREFIX_UNITNUMBER).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" Property property \u003d new Property(postalCode, unit);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" return new AddPropertyCommand(property);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":51}},{"path":"src/main/java/seedu/address/logic/parser/AddSellerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * Parses input arguments and creates a new {@link AddSellerCommand} object.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * The parser processes the input string to extract the necessary parameters","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * (name, phone, and email) for creating a {@link Seller}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"public class AddSellerCommandParser implements Parser\u003cAddSellerCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Parses the given {@code String} of arguments in the context of the {@link AddSellerCommand}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * and returns an {@code AddSellerCommand} object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" * @param args The input arguments from the user.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" * @return An {@code AddSellerCommand} that adds a seller based on the parsed input.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException If the user input does not conform to the expected format.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public AddSellerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" // Tokenize the input arguments based on the expected prefixes (name, phone, email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" // Check if all required prefixes are present and if the preamble is empty","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSellerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" // Verify there are no duplicate prefixes in the input","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" // Parse the name, phone, and email from the argument map","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d ParserUtil.parseClientName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d ParserUtil.parseClientPhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d ParserUtil.parseClientEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" // Create a new Seller using the parsed data","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" Seller seller \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" * @param argumentMultimap The argument multimap that holds the parsed arguments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" * @param prefixes The prefixes to check for presence.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" * @return True if all prefixes contain non-empty values, false otherwise.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":65}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.AddPropertyCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"apollo-tan"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" case AddBuyerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" return new AddBuyerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" case AddSellerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" return new AddSellerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"thony-ui"},"content":" case DeleteBuyerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"thony-ui"},"content":" return new DeleteBuyerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"thony-ui"},"content":" case DeleteSellerCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"thony-ui"},"content":" return new DeleteSellerCommandParser().parse(arguments);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" case AddPropertyCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" return new AddPropertyCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"yongkheehou":9,"Virusrwj223":4,"apollo-tan":1,"thony-ui":6,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":" public static final Prefix PREFIX_KEY \u003d new Prefix(\"k/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":" public static final Prefix PREFIX_POSTALCODE \u003d new Prefix(\"c/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":" public static final Prefix PREFIX_UNITNUMBER \u003d new Prefix(\"u/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"jolwnn":2,"apollo-tan":1,"-":14}},{"path":"src/main/java/seedu/address/logic/parser/DeleteBuyerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":" * Parses input arguments and creates a new {@code DeleteBuyerCommand} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommandParser implements Parser\u003cDeleteBuyerCommand\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" * Parses the given {@code String} of arguments in the context of the {@code DeleteBuyerCommand}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" * and returns a {@code DeleteBuyerCommand} object for execution.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" * @param args The input arguments to parse.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" * @return A {@code DeleteBuyerCommand} object based on the parsed arguments.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" * @throws ParseException If the user input does not conform to the expected format or the phone number is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public DeleteBuyerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_PHONE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" String phoneNumber \u003d argMultimap.getValue(PREFIX_PHONE).orElse(\"\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" if (phoneNumber.isEmpty() || !phoneNumber.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteBuyerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" return new DeleteBuyerCommand(new Phone(phoneNumber));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":35}},{"path":"src/main/java/seedu/address/logic/parser/DeletePropertyCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.DeletePropertyCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":" * Parses input arguments and creates a new DeletePropertyCommand object","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommandParser implements Parser\u003cDeletePropertyCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":" * Parses the given {@code String} of arguments in the context of the DeletePropertyCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":" * and returns a DeletePropertyCommand object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":" public DeletePropertyCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_POSTALCODE, PREFIX_UNITNUMBER)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_POSTALCODE, PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode \u003d ParserUtil.parsePostalCode(argMultimap.getValue(PREFIX_POSTALCODE).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" Unit unitNumber \u003d ParserUtil.parseUnit(argMultimap.getValue(PREFIX_UNITNUMBER).get());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" return new DeletePropertyCommand(postalCode, unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":48}},{"path":"src/main/java/seedu/address/logic/parser/DeleteSellerCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":" * Parses input arguments and creates a new {@code DeleteSellerCommand} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommandParser implements Parser\u003cDeleteSellerCommand\u003e {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" * Parses the given {@code String} of arguments in the context of the {@code DeleteSellerCommand}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" * and returns a {@code DeleteSellerCommand} object for execution.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" * @param args The input arguments to parse.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" * @return A {@code DeleteSellerCommand} object based on the parsed arguments.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" * @throws ParseException If the user input does not conform to the expected format or the phone number is invalid.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public DeleteSellerCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_PHONE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" String phoneNumber \u003d argMultimap.getValue(PREFIX_PHONE).orElse(\"\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" if (phoneNumber.isEmpty() || !phoneNumber.matches(\"\\\\d+\")) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSellerCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" return new DeleteSellerCommand(new Phone(phoneNumber));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":35}},{"path":"src/main/java/seedu/address/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"apollo-tan"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"apollo-tan"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_KEY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"apollo-tan"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"apollo-tan"},"content":" * Parses input arguments and creates a new {@code ListCommand} object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"apollo-tan"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"apollo-tan"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"apollo-tan"},"content":" * Parses the given {@code String} of arguments in the context of the {@code ListCommand}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"apollo-tan"},"content":" * and returns a {@code ListCommand} object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":" * @param args The input arguments to parse.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"apollo-tan"},"content":" * @return A {@code ListCommand} object based on the parsed arguments.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"apollo-tan"},"content":" * @throws ParseException If the user input does not conform to the expected format or the key is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"apollo-tan"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"apollo-tan"},"content":" public ListCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"apollo-tan"},"content":" requireNonNull(args);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"apollo-tan"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(args, PREFIX_KEY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"apollo-tan"},"content":" String keyArg \u003d argMultimap.getValue(PREFIX_KEY).orElse(\"\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"apollo-tan"},"content":" if (keyArg.isEmpty()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"apollo-tan"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"apollo-tan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"apollo-tan"},"content":" // Switch case to handle different key values","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"apollo-tan"},"content":" ListCommand.Key key;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"apollo-tan"},"content":" switch (keyArg.toLowerCase()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":" case \"buyers\":","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" key \u003d ListCommand.Key.BUYERS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" case \"sellers\":","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" key \u003d ListCommand.Key.SELLERS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" case \"clients\":","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" key \u003d ListCommand.Key.CLIENTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"apollo-tan"},"content":" case \"properties\":","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" key \u003d ListCommand.Key.PROPERTIES;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":" break;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"apollo-tan"},"content":" default:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"apollo-tan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"apollo-tan"},"content":" // Return the appropriate ListCommand with the parsed key","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"apollo-tan"},"content":" return new ListCommand(key);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"apollo-tan"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"apollo-tan":56}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jolwnn"},"content":" * Parses a {@code String postalCode} into a {@code postalCode}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"jolwnn"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"jolwnn"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"jolwnn"},"content":" * @throws ParseException if the given {@code postalCode} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"jolwnn"},"content":" public static PostalCode parsePostalCode(String postalCode) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"jolwnn"},"content":" requireNonNull(postalCode);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"jolwnn"},"content":" String trimmedPostalCode \u003d postalCode.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"jolwnn"},"content":" if (!PostalCode.isValidPostalCode(trimmedPostalCode)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"jolwnn"},"content":" throw new ParseException(PostalCode.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"jolwnn"},"content":" return new PostalCode(trimmedPostalCode);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"jolwnn"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"jolwnn"},"content":" * Parses a {@code String unitNumber} into a {@code unitNumber}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"jolwnn"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"jolwnn"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"jolwnn"},"content":" * @throws ParseException if the given {@code unitNumber} is invalid.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"jolwnn"},"content":" public static Unit parseUnit(String unitNumber) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"jolwnn"},"content":" requireNonNull(unitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"jolwnn"},"content":" String trimmedUnitNumber \u003d unitNumber.trim();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jolwnn"},"content":" if (!Unit.isValidUnit(trimmedUnitNumber)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jolwnn"},"content":" throw new ParseException(Unit.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"jolwnn"},"content":" return new Unit(trimmedUnitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":" public static seedu.address.model.client.Name parseClientName(String name) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":" return new seedu.address.model.client.Name(trimmedName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" public static seedu.address.model.client.Phone parseClientPhone(String phone) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(phone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":" return new seedu.address.model.client.Phone(trimmedPhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"yongkheehou"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":" public static seedu.address.model.client.Email parseClientEmail(String email) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"yongkheehou"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"yongkheehou"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"yongkheehou"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" return new seedu.address.model.client.Email(trimmedEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"jolwnn":32,"yongkheehou":46,"-":124}},{"path":"src/main/java/seedu/address/model/ClientBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.UniqueClientList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * Wraps all data at the client-book level","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" * Duplicates are not allowed (by .isSameClient comparison)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class ClientBook implements ReadOnlyClientBook {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private final UniqueClientList clients;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * among constructors.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" clients \u003d new UniqueClientList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public ClientBook() {}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Creates an ClientBook using the Clients in the {@code toBeCopied}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public ClientBook(ReadOnlyClientBook toBeCopied) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" this();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" //// list overwrite operations","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Replaces the contents of the client list with {@code clients}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" * {@code clients} must not contain duplicate clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public void setClients(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" this.clients.setClients(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * Resets the existing data of this {@code ClientBook} with {@code newData}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" public void resetData(ReadOnlyClientBook newData) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" setClients(newData.getClientList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" //// client-level operations","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a client with the same identity as {@code client} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" return clients.contains(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" * Adds a client to the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" * The client must not already exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" public void addClient(Client p) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" clients.add(p);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" * Replaces the given client {@code target} in the list with {@code editedClient}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" clients.setClient(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" * Removes {@code key} from this {@code ClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" public void removeClient(Client key) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" clients.remove(key);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" //// util methods","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" .add(\"clients\", clients)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getClientList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" return clients.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof ClientBook)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" ClientBook otherClientBook \u003d (ClientBook) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" return clients.equals(otherClientBook.clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" return clients.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":130}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Predicate\u003cClient\u003e PREDICATE_SHOW_ALL_CLIENTS \u003d unused -\u003e true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" * Returns the user prefs\u0027 client book file path.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" Path getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" * Sets the user prefs\u0027 client book file path.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" void setClientBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" * Replaces client book data with the data in {@code clientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" void setClientBook(ReadOnlyClientBook clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" /** Returns the ClientBook */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" ReadOnlyClientBook getClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a Client with the same identity as {@code Client} exists in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" boolean hasClient(Client client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" * Deletes the given client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":" * The person must exist in the client book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" void deleteClient(Client target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" * Adds the given client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" * {@code client} must not already exist in the client book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" void addClient(Client client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" * Replaces the given client {@code target} with {@code editedClient}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" * {@code target} must exist in the client book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" void setClient(Client target, Client editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" /** Returns an unmodifiable view of the filtered client list */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":" ObservableList\u003cClient\u003e getFilteredClientList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" * Updates the filter of the filtered client list to filter by the given {@code predicate}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" void updateFilteredClientList(Predicate\u003cClient\u003e predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":" * Returns the user prefs\u0027 property book file path.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Virusrwj223"},"content":" Path getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Virusrwj223"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Virusrwj223"},"content":" void setPropertyBookFilePath(Path propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Virusrwj223"},"content":" * Returns the user prefs.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook getPropertyBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a person with the same identity as {@code property} exists in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Virusrwj223"},"content":" boolean hasProperty(Property property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Virusrwj223"},"content":" * Adds the given property.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Virusrwj223"},"content":" * {@code property} must not already exist in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Virusrwj223"},"content":" void addProperty(Property property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"yongkheehou":52,"Virusrwj223":28,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.storage.JsonClientBookStorage;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" private final PropertyBook propertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" private final ClientBook clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" // note that filteredClients may be removed if we decide not to keep the filtering feature","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" private final FilteredList\u003cClient\u003e filteredClients;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" private Path clientBookFilePath \u003d Paths.get(\"data\" , \"clientbook.json\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook propertyBook, ReadOnlyClientBook clientBook) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(addressBook, userPrefs, propertyBook, clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" + userPrefs + \" and property prefs \" + propertyBook + \" and client book \" + clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" this.propertyBook \u003d new PropertyBook(propertyBook);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" this.clientBook \u003d new ClientBook(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" filteredClients \u003d new FilteredList\u003c\u003e(this.clientBook.getClientList());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" this(new AddressBook(), new UserPrefs(), new PropertyBook(), new ClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" return userPrefs.getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath(Path clientBookFilePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(clientBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" userPrefs.setAddressBookFilePath(clientBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" public void setClientBook(ReadOnlyClientBook clientBook) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":" this.clientBook.resetData(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"yongkheehou"},"content":" public ReadOnlyClientBook getClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" return clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":" return clientBook.hasClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":" public void deleteClient(Client target) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":" clientBook.removeClient(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage jsonClientBookStorage \u003d new JsonClientBookStorage(clientBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" jsonClientBookStorage.saveClientBook(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" } catch (IOException e) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":" System.out.println(\"Error while saving ClientBook: \" + e.getMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" clientBook.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" updateFilteredClientList(PREDICATE_SHOW_ALL_CLIENTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"yongkheehou"},"content":" clientBook.setClient(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Client List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"yongkheehou"},"content":" * Returns an unmodifiable view of the list of {@code Client} backed by the internal list of","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"yongkheehou"},"content":" * {@code versionedClientBook}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" return filteredClients;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"yongkheehou"},"content":" public void updateFilteredClientList(Predicate\u003cClient\u003e predicate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"yongkheehou"},"content":" filteredClients.setPredicate(predicate);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"Virusrwj223"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Property \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"Virusrwj223"},"content":" return userPrefs.getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath(Path propertyBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Virusrwj223"},"content":" userPrefs.setPropertyBookFilePath(propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"Virusrwj223"},"content":" public void addProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"Virusrwj223"},"content":" propertyBook.addProperty(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"Virusrwj223"},"content":" public boolean hasProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"Virusrwj223"},"content":" return propertyBook.hasProperty(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"Virusrwj223"},"content":" public ReadOnlyPropertyBook getPropertyBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"Virusrwj223"},"content":" return propertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80,"Virusrwj223":37,"-":136}},{"path":"src/main/java/seedu/address/model/PropertyBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.UniquePropertiesList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" * Duplicates are not allowed (by .isSameProperty comparison)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyBook implements ReadOnlyPropertyBook {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" private final UniquePropertiesList properties;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" /*","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" * among constructors.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" properties \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBook() {}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" * Creates a PropertyBook using the Property in the {@code toBeCopied}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBook(ReadOnlyPropertyBook toBeCopied) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" this();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" * Resets the existing data of this {@code PropertyBook} with {@code newData}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" public void resetData(ReadOnlyPropertyBook newData) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" setProperty(newData.getPropertyList());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" * Replaces the contents of the property list with {@code properties}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" * {@code persons} must not contain duplicate persons.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty(List\u003cProperty\u003e properties) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" this.properties.setProperties(properties);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" * Adds a property to the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" * The property must not already exist in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" public void addProperty(Property p) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" properties.add(p);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a property with the same identity as {@code property} exists in the address book.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" public boolean hasProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" return properties.contains(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" .add(\"properties\", properties)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" public ObservableList\u003cProperty\u003e getPropertyList() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" return properties.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof PropertyBook)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook otherPropertyBook \u003d (PropertyBook) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" return properties.equals(otherPropertyBook.properties);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" return properties.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":106}},{"path":"src/main/java/seedu/address/model/ReadOnlyClientBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Unmodifiable view of a client book","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public interface ReadOnlyClientBook {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" * Returns an unmodifiable view of the client list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * This list will not contain any duplicate clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" ObservableList\u003cClient\u003e getClientList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":17}},{"path":"src/main/java/seedu/address/model/ReadOnlyPropertyBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * Unmodifiable view of a property book","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"public interface ReadOnlyPropertyBook {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * Returns an unmodifiable view of the property list.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" * This list will not contain any duplicate property.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" ObservableList\u003cProperty\u003e getPropertyList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":15}},{"path":"src/main/java/seedu/address/model/ReadOnlyUserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Unmodifiable view of user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public interface ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" Path getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Path getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-11-27","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"Virusrwj223":2,"-":16}},{"path":"src/main/java/seedu/address/model/UserPrefs.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Represents User\u0027s preferences.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class UserPrefs implements ReadOnlyUserPrefs {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private GuiSettings guiSettings \u003d new GuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private Path addressBookFilePath \u003d Paths.get(\"data\" , \"addressbook.json\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private Path clientBookFilePath \u003d Paths.get(\"data\" , \"clientbook.json\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" private Path propertyBookFilePath \u003d Paths.get(\"data\" , \"propertybook.json\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with default values.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public UserPrefs() {}","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code UserPrefs} with the prefs in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public UserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code UserPrefs} with {@code newUserPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyUserPrefs newUserPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireNonNull(newUserPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" setGuiSettings(newUserPrefs.getGuiSettings());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" setAddressBookFilePath(newUserPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return guiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" this.guiSettings \u003d guiSettings;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" this.addressBookFilePath \u003d addressBookFilePath;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return clientBookFilePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath(Path propertyBookFilePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(propertyBookFilePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" this.clientBookFilePath \u003d propertyBookFilePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof UserPrefs)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" UserPrefs otherUserPrefs \u003d (UserPrefs) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return guiSettings.equals(otherUserPrefs.guiSettings)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" \u0026\u0026 addressBookFilePath.equals(otherUserPrefs.addressBookFilePath);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" return propertyBookFilePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath(Path propertyBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(propertyBookFilePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" this.propertyBookFilePath \u003d propertyBookFilePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return Objects.hash(guiSettings, addressBookFilePath);","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" sb.append(\"Gui Settings : \" + guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" sb.append(\"\\nLocal data file location : \" + addressBookFilePath);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":10,"Virusrwj223":10,"-":88}},{"path":"src/main/java/seedu/address/model/client/Buyer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Represents a Buyer in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Buyer extends Client {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * Constructs a Buyer object with the specified name, phone, and email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" * @param name The name of the buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * @param phone The phone number of the buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * @param email The email address of the buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public Buyer(Name name, Phone phone, Email email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" super(name, phone, email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients are buyers and have the same phone number.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * This defines a weaker notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public boolean isSameClient(Client otherClient) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" if (otherClient \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" return otherClient instanceof Buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 otherClient.getPhone().equals(getPhone());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" return Objects.hash(name, phone, email, ClientTypes.BUYER.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients have the same identity and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * This defines a stronger notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Buyer)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" Buyer otherPerson \u003d (Buyer) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 email.equals(otherPerson.email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" .add(\"client type\", ClientTypes.BUYER.toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"thony-ui"},"content":" public boolean isBuyer() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"thony-ui"},"content":" public boolean isSeller() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":73,"thony-ui":9}},{"path":"src/main/java/seedu/address/model/client/Client.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":" * Represents a Client in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public abstract class Client {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" // Identity fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" protected final Name name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" protected final Phone phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" protected final Email email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public Client(Name name, Phone phone, Email email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(name, phone, email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" public Name getName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" return name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public Phone getPhone() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" return phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public Email getEmail() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" return email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" public abstract boolean isSameClient(Client otherClient);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" public abstract boolean isBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" public abstract boolean isSeller();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":39,"thony-ui":2}},{"path":"src/main/java/seedu/address/model/client/ClientTypes.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":" * Represents the different types of clients in the system.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":" * This enum provides two types of clients: BUYER and SELLER.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":" * Each client type is associated with a specific string representation.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"public enum ClientTypes {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Represents a buyer client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" BUYER(\"buyer\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * Represents a seller client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" SELLER(\"seller\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public static final String CLIENT_TYPE_CONSTRAINTS \u003d \"Client types should only be `BUYER` or `SELLER`\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private final String type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code ClientTypes} with the specified type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * @param type The string representation of the client type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" ClientTypes(String type) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" this.type \u003d type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" * Returns the string representation of the client type.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * @return The client type as a string.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public String getType() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" return type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * Returns if a given string is a valid type.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidClientType(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" if (test \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" return test.equals(ClientTypes.BUYER.toString()) || test.equals(ClientTypes.SELLER.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":50}},{"path":"src/main/java/seedu/address/model/client/Email.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Represents a Person\u0027s email in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidEmail(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Email {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" private static final String SPECIAL_CHARACTERS \u003d \"+_.-\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Emails should be of the format local-part@domain \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" + \"and adhere to the following constraints:\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" + \"1. The local-part should only contain alphanumeric characters and these special characters, excluding \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" + \"the parentheses, (\" + SPECIAL_CHARACTERS + \"). The local-part may not start or end with any special \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" + \"characters.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" + \"2. This is followed by a \u0027@\u0027 and then a domain name. The domain name is made up of domain labels \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" + \"separated by periods.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" + \"The domain name must:\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" + \" - end with a domain label at least 2 characters long\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" + \" - have each domain label start and end with alphanumeric characters\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" + \" - have each domain label consist of alphanumeric characters, separated only by hyphens, if any.\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // alphanumeric and special characters","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" private static final String ALPHANUMERIC_NO_UNDERSCORE \u003d \"[^\\\\W_]+\"; // alphanumeric characters except underscore","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" private static final String LOCAL_PART_REGEX \u003d \"^\" + ALPHANUMERIC_NO_UNDERSCORE + \"([\" + SPECIAL_CHARACTERS + \"]\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" private static final String DOMAIN_PART_REGEX \u003d ALPHANUMERIC_NO_UNDERSCORE","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" + \"(-\" + ALPHANUMERIC_NO_UNDERSCORE + \")*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" private static final String DOMAIN_LAST_PART_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"){2,}$\"; // At least two chars","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private static final String DOMAIN_REGEX \u003d \"(\" + DOMAIN_PART_REGEX + \"\\\\.)*\" + DOMAIN_LAST_PART_REGEX;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public static final String VALIDATION_REGEX \u003d LOCAL_PART_REGEX + \"@\" + DOMAIN_REGEX;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" * Constructs an {@code Email}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" * @param email A valid email address.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" public Email(String email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" checkArgument(isValidEmail(email), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" value \u003d email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" * Returns if a given string is a valid email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidEmail(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Email)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" Email otherEmail \u003d (Email) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" return value.equals(otherEmail.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":78}},{"path":"src/main/java/seedu/address/model/client/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Represents a Person\u0027s name in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Name {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" public final String fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" * @param name A valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public Name(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" fullName \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" return fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" return fullName.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":66}},{"path":"src/main/java/seedu/address/model/client/Phone.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * Represents a Person\u0027s phone number in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidPhone(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Phone {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" \"Phone numbers should only contain numbers, and it should be at least 3 digits long\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{3,}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code Phone}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * @param phone A valid phone number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public Phone(String phone) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(phone);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" checkArgument(isValidPhone(phone), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" value \u003d phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" * Returns true if a given string is a valid phone number.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public static boolean isValidPhone(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Phone)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" Phone otherPhone \u003d (Phone) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" return value.equals(otherPhone.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/main/java/seedu/address/model/client/Seller.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Represents a Seller in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"public class Seller extends Client {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" * Constructs a Seller object with the specified name, phone, and email.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" * @param name The name of the seller.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * @param phone The phone number of the seller.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * @param email The email address of the seller.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public Seller(Name name, Phone phone, Email email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" super(name, phone, email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients are sellers and have the same phone number.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * This defines a weaker notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public boolean isSameClient(Client otherClient) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" if (otherClient \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" return otherClient instanceof Seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 otherClient.getPhone().equals(getPhone());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" return Objects.hash(name, phone, email, ClientTypes.SELLER.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Returns true if both clients have the same identity and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * This defines a stronger notion of equality between two clients.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof Seller)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" Seller otherPerson \u003d (Seller) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" \u0026\u0026 email.equals(otherPerson.email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" .add(\"client type\", ClientTypes.SELLER.toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"thony-ui"},"content":" public boolean isBuyer() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"thony-ui"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"thony-ui"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"thony-ui"},"content":" public boolean isSeller() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"thony-ui"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":73,"thony-ui":8}},{"path":"src/main/java/seedu/address/model/client/UniqueClientList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.ClientNotFoundException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.DuplicateClientException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" * A list of clients that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * A client is considered unique by comparing using {@code Client#isSameClient(Client)}. As such, adding and updating of","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * clients uses Client#isSameClient(Client) for equality so as to ensure that the client being added or updated is","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * unique in terms of identity in the UniqueClientList. However, the removal of a client uses Client#equals(Object) so","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * as to ensure that the client with exactly the same fields will be removed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" * @see Client#isSameClient(Client)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"public class UniqueClientList implements Iterable\u003cClient\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" private final ObservableList\u003cClient\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" private final ObservableList\u003cClient\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" * Returns true if the list contains an equivalent client as the given argument.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public boolean contains(Client toCheck) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" return internalList.stream().anyMatch(toCheck::isSameClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Adds a client to the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * The client must not already exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public void add(Client toAdd) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * Replaces the client {@code target} in the list with {@code editedClient}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" * The client identity of {@code editedClient} must not be the same as another existing client in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(target, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" throw new ClientNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" if (!target.isSameClient(editedClient) \u0026\u0026 contains(editedClient)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" internalList.set(index, editedClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" * Removes the equivalent client from the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" * The client must exist in the list.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" public void remove(Client toRemove) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" throw new ClientNotFoundException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" public void setClients(UniqueClientList replacement) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" * Replaces the contents of this list with {@code clients}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" * {@code clients} must not contain duplicate clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" public void setClients(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" requireAllNonNull(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" if (!clientsAreUnique(clients)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" internalList.setAll(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" public Iterator\u003cClient\u003e iterator() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" if (!(other instanceof UniqueClientList)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList otherUniqueClientList \u003d (UniqueClientList) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" return internalList.equals(otherUniqueClientList.internalList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" * Returns true if {@code clients} contains only unique clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" private boolean clientsAreUnique(List\u003cClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" for (int i \u003d 0; i \u003c clients.size() - 1; i++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" for (int j \u003d i + 1; j \u003c clients.size(); j++) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" if (clients.get(i).isSameClient(clients.get(j))) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":150}},{"path":"src/main/java/seedu/address/model/client/exceptions/ClientNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":" * Signals that the operation is unable to find the specified client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"public class ClientNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":6}},{"path":"src/main/java/seedu/address/model/client/exceptions/DuplicateClientException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":" * Signals that the operation will result in duplicate Clients (Clients are considered duplicates if they have the same","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":" * identity and are of the same type (either Buyer or Seller).","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"public class DuplicateClientException extends RuntimeException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" public DuplicateClientException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":11}},{"path":"src/main/java/seedu/address/model/property/PostalCode.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * Represents a property postal code in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" * Guarantees: immutable; postal code is valid as declared in {@link #isValidPostalCode(String)}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"public class PostalCode {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" \"Postal Code numbers should only contain positive numbers, and it should be exactly 6 digits long\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\d{6}\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" public final String value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code PostalCode}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" * @param postalCode A valid phone number.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" public PostalCode(String postalCode) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(postalCode);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" checkArgument(isValidPostalCode(postalCode), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" value \u003d postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a given string is a valid postcal code.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public static boolean isValidPostalCode(String test) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" return value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof PostalCode)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" PostalCode otherPostalCode \u003d (PostalCode) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" return value.equals(otherPostalCode.value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":58}},{"path":"src/main/java/seedu/address/model/property/Property.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" * Represents a Property in the address book.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"public class Property {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" private final PostalCode postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" private final Unit unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" public Property(PostalCode postalCode, Unit unit) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(postalCode, unit);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" this.postalCode \u003d postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" this.unit \u003d unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" public PostalCode getPostalCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" return postalCode;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public Unit getUnit() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" return unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if both properties have the same unit number and postal code.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" public boolean isSameProperty(Property otherProperty) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" if (otherProperty \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" return otherProperty !\u003d null","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getPostalCode().equals(getPostalCode())","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getUnit().equals(getUnit());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if both properties have the same identity and data fields.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" * This defines a stronger notion of equality between two properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof Property)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" Property otherProperty \u003d (Property) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" return otherProperty !\u003d null","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getPostalCode().equals(getPostalCode())","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" \u0026\u0026 otherProperty.getUnit().equals(getUnit());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" return Objects.hash(postalCode, unit);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" .add(\"postalCode\", postalCode)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" .add(\"unit\", unit)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" .toString();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":82}},{"path":"src/main/java/seedu/address/model/property/UniquePropertiesList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.DuplicatePropertyException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.PropertyNotFoundException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" * A list of properties that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" * A property is considered unique by comparing using {@code Property#isSameProperty(Property)}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * As such, adding and updating of properties uses {@code Property#isSameProperty(Property)}","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * for equality to ensure uniqueness.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" * @see Property#isSameProperty(Property)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"public class UniquePropertiesList implements Iterable\u003cProperty\u003e {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" private final ObservableList\u003cProperty\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" private final ObservableList\u003cProperty\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if the list contains an equivalent property as the given argument.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" public boolean contains(Property toCheck) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" return internalList.stream().anyMatch(toCheck::isSameProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" * Adds a property to the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" * The property must not already exist in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public void add(Property toAdd) throws DuplicatePropertyException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" throw new DuplicatePropertyException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" * Replaces the property {@code target} in the list with {@code editedProperty}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" * The property identity of {@code editedProperty} must not be the same as another existing property in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty(Property target, Property editedProperty)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" throws DuplicatePropertyException, PropertyNotFoundException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(target, editedProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" throw new PropertyNotFoundException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" if (!target.isSameProperty(editedProperty) \u0026\u0026 contains(editedProperty)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" throw new DuplicatePropertyException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" internalList.set(index, editedProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" public void setProperties(UniquePropertiesList replacement) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" * Replaces the contents of this list with {@code properties}.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" * {@code properties} must not contain duplicate properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" public void setProperties(List\u003cProperty\u003e properties) throws DuplicatePropertyException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" requireAllNonNull(properties);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" if (!propertiesAreUnique(properties)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" throw new DuplicatePropertyException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" internalList.setAll(properties);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" public ObservableList\u003cProperty\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" * Returns an iterator over the properties in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" * @return An iterator over the properties.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" public Iterator\u003cProperty\u003e iterator() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof UniquePropertiesList)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList otherUniquePropertyList \u003d (UniquePropertiesList) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Virusrwj223"},"content":" return internalList.equals(otherUniquePropertyList.internalList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Virusrwj223"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Virusrwj223"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if {@code properties} contains only unique properties.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Virusrwj223"},"content":" private boolean propertiesAreUnique(List\u003cProperty\u003e properties) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" for (int i \u003d 0; i \u003c properties.size() - 1; i++) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Virusrwj223"},"content":" for (int j \u003d i + 1; j \u003c properties.size(); j++) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Virusrwj223"},"content":" if (properties.get(i).isSameProperty(properties.get(j))) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":143}},{"path":"src/main/java/seedu/address/model/property/Unit.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" * Represents a property unit in the address book.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" * Guarantees: immutable; unit is valid as declared in {@link #isValidUnit(String)}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"public class Unit {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" \"Unit numbers should only contain numbers delimited by a dash, and it should be minimally 2 digits long\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALIDATION_REGEX \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" \"^(?:\\\\d{2}|1[0-3]\\\\d|14[0-8])-(?:\\\\d{2,5}|10\\\\d{4}|110\\\\d{3}|1110\\\\d{2}|11110\\\\d|111110)$\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" public final String value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code Unit}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" * @param unit A valid unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" public Unit(String unit) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(unit);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" checkArgument(isValidUnit(unit), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" value \u003d unit;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" * Returns true if a given string is a valid unit number.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" public static boolean isValidUnit(String test) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" public String toString() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" return value;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" return true;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" if (!(other instanceof Unit)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" return false;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" Unit otherUnit \u003d (Unit) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" return value.equals(otherUnit.value);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":58}},{"path":"src/main/java/seedu/address/model/property/exceptions/DuplicatePropertyException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property.exceptions;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":" * Signals that the operation will result in duplicate Property (Properties are considered duplicates if they have the","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":" * same identity).","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"public class DuplicatePropertyException extends RuntimeException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":" public DuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" super(\"Operation would result in duplicate persons\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":11}},{"path":"src/main/java/seedu/address/model/property/exceptions/PropertyNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property.exceptions;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":" * Signals that the operation is unable to find the specified person.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyNotFoundException extends RuntimeException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":" public PropertyNotFoundException() {}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":8}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" getTagSet(\"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\", \"friends\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" getTagSet(\"neighbours\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" getTagSet(\"family\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" getTagSet(\"classmates\")),","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" getTagSet(\"colleagues\"))","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public static Client[] getSampleClients() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" return new Client[] {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" new Buyer(new seedu.address.model.client.Name(\"Alex Yeoh\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"87438807\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"alexyeoh@example.com\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" new Seller(new seedu.address.model.client.Name(\"Bernice Yu\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"99272758\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"berniceyu@example.com\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" new Buyer(new seedu.address.model.client.Name(\"Charlotte Oliveiro\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"93210283\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"charlotte@example.com\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" new Seller(new seedu.address.model.client.Name(\"David Li\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Phone(\"91031282\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" new seedu.address.model.client.Email(\"lidavid@example.com\"))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" };","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" public static ReadOnlyClientBook getSampleClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" ClientBook sampleAb \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" for (Client sampleClient : getSampleClients()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" sampleAb.addClient(sampleClient);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" return sampleAb;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" public static Property[] getSampleProperty() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" return new Property[] {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" new Property(new PostalCode(\"123456\"), new Unit(\"11-11\")),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" new Property(new PostalCode(\"123457\"), new Unit(\"00-00\")),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" };","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" public static ReadOnlyPropertyBook getSamplePropertyBook() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook sampleAb \u003d new PropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" for (Property sampleProperty : getSampleProperty()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" sampleAb.addProperty(sampleProperty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" return sampleAb;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"yongkheehou":28,"Virusrwj223":20,"-":60}},{"path":"src/main/java/seedu/address/storage/ClientBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * Represents a storage for {@link seedu.address.model.ClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"public interface ClientBookStorage {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Path getClientBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * Returns ClientBook data as a {@link ReadOnlyClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" * @see #getClientBookFilePath()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e readClientBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Saves the given {@link ReadOnlyClientBook} to the storage.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" * @param clientBook cannot be null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" void saveClientBook(ReadOnlyClientBook clientBook) throws IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" * @see #saveClientBook(ReadOnlyClientBook)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" void saveClientBook(ReadOnlyClientBook clientBook, Path filePath) throws IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":45}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedClient.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.ClientTypes;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * Jackson-friendly version of {@link Client}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"class JsonAdaptedClient {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Client\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private final String name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" private final String phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" private final String email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" private final String type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code JsonAdaptedClient} with the given client details.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @JsonCreator","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" public JsonAdaptedClient(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"type\") String type) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" this.type \u003d type;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" * Converts a given {@code Client} into this class for Jackson use.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" public JsonAdaptedClient(Client source) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" type \u003d source instanceof Buyer ? ClientTypes.BUYER.toString() : ClientTypes.SELLER.toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * Converts this Jackson-friendly adapted client object into the model\u0027s {@code Client} object.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted client.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" public Client toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" if (type \u003d\u003d null) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" ClientTypes.class.getSimpleName()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" if (!ClientTypes.isValidClientType(type)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(ClientTypes.CLIENT_TYPE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" return Objects.equals(type, ClientTypes.BUYER.toString()) ? new Buyer(modelName, modelPhone, modelEmail)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" : new Seller(modelName, modelPhone, modelEmail);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":93}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedProperty.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" * Jackson-friendly version of {@link Property}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"public class JsonAdaptedProperty {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" private final String postalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" private final String unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code JsonAdaptedProperty} with the given property details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @JsonCreator","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public JsonAdaptedProperty(@JsonProperty(\"postalCode\") String postalCode, @JsonProperty(\"unit\") String unit) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" this.postalCode \u003d postalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" this.unit \u003d unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" * Converts a given {@code Property} into this class for Jackson use.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" public JsonAdaptedProperty(Property source) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" postalCode \u003d source.getPostalCode().value;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" unit \u003d source.getUnit().value;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" * Converts this Jackson-friendly adapted property object into the model\u0027s {@code Property} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted property.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public Property toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" if (postalCode \u003d\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" PostalCode.class.getSimpleName()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" if (!PostalCode.isValidPostalCode(postalCode)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(PostalCode.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" final PostalCode modelPostalCode \u003d new PostalCode(postalCode);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" if (unit \u003d\u003d null) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Unit.class.getSimpleName()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" if (!Unit.isValidUnit(unit)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(Unit.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" final Unit modelUnit \u003d new Unit(unit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" return new Property(modelPostalCode, modelUnit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":61}},{"path":"src/main/java/seedu/address/storage/JsonClientBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * A class to access ClientBook data stored as a json file on the hard disk.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"public class JsonClientBookStorage implements ClientBookStorage {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonClientBookStorage.class);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private Path filePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" public JsonClientBookStorage(Path filePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" return filePath;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" return readClientBook(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" * Similar to {@link #readClientBook()}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cJsonSerializableClientBook\u003e jsonClientBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" filePath, JsonSerializableClientBook.class);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" if (!jsonClientBook.isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return Optional.empty();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" try {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" return Optional.of(jsonClientBook.get().toModelType());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" saveClientBook(clientBook, filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" * Similar to {@link #saveClientBook(ReadOnlyClientBook)}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(clientBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" JsonUtil.saveJsonFile(new JsonSerializableClientBook(clientBook), filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80}},{"path":"src/main/java/seedu/address/storage/JsonPropertyBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.FileUtil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * A class to access PropertyBook data stored as a json file on the hard disk.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"public class JsonPropertyBookStorage implements PropertyBookStorage {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(JsonAddressBookStorage.class);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" private Path filePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" public JsonPropertyBookStorage(Path filePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" this.filePath \u003d filePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" return filePath;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" public Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook() throws DataLoadingException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" return readPropertyBook(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" * Similar to {@link #readPropertyBook()}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" public Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cJsonSerializablePropertyBook\u003e jsonPropertyBook \u003d JsonUtil.readJsonFile(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" filePath, JsonSerializablePropertyBook.class);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" if (!jsonPropertyBook.isPresent()) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" return Optional.empty();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" try {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" return Optional.of(jsonPropertyBook.get().toModelType());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" } catch (IllegalValueException ive) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" logger.info(\"Illegal values found in \" + filePath + \": \" + ive.getMessage());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" throw new DataLoadingException(ive);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" public void savePropertyBook(ReadOnlyPropertyBook propertyBook) throws IOException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" savePropertyBook(propertyBook, filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" * Similar to {@link #savePropertyBook(ReadOnlyPropertyBook)}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" * @param filePath location of the data. Cannot be null.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" public void savePropertyBook(ReadOnlyPropertyBook propertyBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(propertyBook);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" requireNonNull(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" FileUtil.createIfMissing(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" JsonUtil.saveJsonFile(new JsonSerializablePropertyBook(propertyBook), filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":79}},{"path":"src/main/java/seedu/address/storage/JsonSerializableClientBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * An Immutable ClientBook that is serializable to JSON format.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"@JsonRootName(value \u003d \"clientbook\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"class JsonSerializableClientBook {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public static final String MESSAGE_DUPLICATE_CLIENT \u003d \"Clients list contains duplicate client(s).\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private final List\u003cJsonAdaptedClient\u003e clients \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" * Constructs a {@code JsonSerializableClientBook} with the given clients.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" @JsonCreator","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public JsonSerializableClientBook(@JsonProperty(\"clients\") List\u003cJsonAdaptedClient\u003e clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" this.clients.addAll(clients);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" * Converts a given {@code ReadOnlyClientBook} into this class for Jackson use.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableClientBook}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" public JsonSerializableClientBook(ReadOnlyClientBook source) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" clients.addAll(source.getClientList().stream().map(JsonAdaptedClient::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" * Converts this client book into the model\u0027s {@code ClientBook} object.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public ClientBook toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" ClientBook clientBook \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" for (JsonAdaptedClient jsonAdaptedClient : clients) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" Client client \u003d jsonAdaptedClient.toModelType();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" if (clientBook.hasClient(client)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_CLIENT);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" clientBook.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" return clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/main/java/seedu/address/storage/JsonSerializablePropertyBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" * An Immutable PropertyBook that is serializable to JSON format.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"@JsonRootName(value \u003d \"propertybook\")","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"public class JsonSerializablePropertyBook {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" public static final String MESSAGE_DUPLICATE_PROPERTY \u003d \"Properties list contains duplicate property(s).\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" private final List\u003cJsonAdaptedProperty\u003e properties \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" * Constructs a {@code JsonSerializablePropertyBook} with the given properties.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" @JsonCreator","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public JsonSerializablePropertyBook(@JsonProperty(\"properties\") List\u003cJsonAdaptedProperty\u003e properties) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" this.properties.addAll(properties);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" * Converts a given {@code ReadOnlyPropertyBook} into this class for Jackson use.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializablePropertyBook}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" public JsonSerializablePropertyBook(ReadOnlyPropertyBook source) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" properties.addAll(source.getPropertyList().stream().map(JsonAdaptedProperty::new).collect(Collectors.toList()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" * Converts this property book into the model\u0027s {@code PropertyBook} object.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBook toModelType() throws IllegalValueException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook propertyBook \u003d new PropertyBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" for (JsonAdaptedProperty jsonAdaptedProperty : properties) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" Property property \u003d jsonAdaptedProperty.toModelType();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" if (propertyBook.hasProperty(property)) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_PROPERTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" propertyBook.addProperty(property);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" return propertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":59}},{"path":"src/main/java/seedu/address/storage/PropertyBookStorage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * Represents a storage for {@link seedu.address.model.PropertyBook}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"public interface PropertyBookStorage {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" * Returns the file path of the data file.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" Path getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" * Returns AddressBook data as a {@link ReadOnlyPropertyBook}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" * Returns {@code Optional.empty()} if storage file is not found.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" *","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" * @throws DataLoadingException if loading the data from storage failed.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook() throws DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" * @see #getPropertyBookFilePath()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook(Path filePath) throws DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" * Saves the given {@link ReadOnlyPropertyBook} to the storage.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" * @param propertyBook cannot be null.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" * @throws IOException if there was any problem writing to the file.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" void savePropertyBook(ReadOnlyPropertyBook propertyBook) throws IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" * @see #savePropertyBook(ReadOnlyPropertyBook)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" void savePropertyBook(ReadOnlyPropertyBook propertyBook, Path filePath) throws IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":44}},{"path":"src/main/java/seedu/address/storage/Storage.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * API of the Storage component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"public interface Storage extends AddressBookStorage, UserPrefsStorage, PropertyBookStorage, ClientBookStorage {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException;","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException;","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" void saveClientBook(ReadOnlyClientBook clientBook) throws IOException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" void savePropertyBook(ReadOnlyPropertyBook propertyBook) throws IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook() throws DataLoadingException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"yongkheehou":7,"Virusrwj223":8,"-":31}},{"path":"src/main/java/seedu/address/storage/StorageManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Manages storage of AddressBook data in local storage.","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class StorageManager implements Storage {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(StorageManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private AddressBookStorage addressBookStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private UserPrefsStorage userPrefsStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" private PropertyBookStorage propertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private ClientBookStorage clientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Creates a {@code StorageManager} with the given {@code AddressBookStorage} and {@code UserPrefStorage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage userPrefsStorage,","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" PropertyBookStorage propertyBookStorage, ClientBookStorage clientBookStorage) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.addressBookStorage \u003d addressBookStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.userPrefsStorage \u003d userPrefsStorage;","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" this.propertyBookStorage \u003d propertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" this.clientBookStorage \u003d clientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Path getUserPrefsFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" return userPrefsStorage.getUserPrefsFilePath();","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Optional\u003cUserPrefs\u003e readUserPrefs() throws DataLoadingException {","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return userPrefsStorage.readUserPrefs();","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void saveUserPrefs(ReadOnlyUserPrefs userPrefs) throws IOException {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" userPrefsStorage.saveUserPrefs(userPrefs);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook() throws DataLoadingException {","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return readAddressBook(addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Optional\u003cReadOnlyAddressBook\u003e readAddressBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return addressBookStorage.readAddressBook(filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" addressBookStorage.saveAddressBook(addressBook, filePath);","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d PropertyBook methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" return propertyBookStorage.getPropertyBookFilePath();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" public Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook() throws DataLoadingException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" return readPropertyBook(propertyBookStorage.getPropertyBookFilePath());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" public Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" return propertyBookStorage.readPropertyBook(filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" public void savePropertyBook(ReadOnlyPropertyBook propertyBook) throws IOException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" savePropertyBook(propertyBook, propertyBookStorage.getPropertyBookFilePath());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" public void savePropertyBook(ReadOnlyPropertyBook propertyBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" propertyBookStorage.savePropertyBook(propertyBook, filePath);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook methods \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" return addressBookStorage.getAddressBookFilePath();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook() throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" return readClientBook(clientBookStorage.getClientBookFilePath());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" public Optional\u003cReadOnlyClientBook\u003e readClientBook(Path filePath) throws DataLoadingException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" logger.fine(\"Attempting to read data from file: \" + filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" return clientBookStorage.readClientBook(filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" saveClientBook(clientBook, clientBookStorage.getClientBookFilePath());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook, Path filePath) throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":" logger.fine(\"Attempting to write to data file: \" + filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" clientBookStorage.saveClientBook(clientBook, filePath);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":33,"Virusrwj223":29,"-":76}},{"path":"src/main/java/seedu/address/ui/ClientCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"public class ClientCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" private static final String FXML \u003d \"ClientListCard.fxml\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" public final Client client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" private HBox cardPane;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" private Label name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private Label id;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" private Label phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" private Label email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" public ClientCard(Client client, int displayedIndex) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" super(FXML);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" this.client \u003d client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" name.setText(client.getName().fullName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" phone.setText(client.getPhone().value);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" email.setText(client.getEmail().value);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" public HBox getCardPane() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return this.cardPane;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":53}},{"path":"src/main/java/seedu/address/ui/ClientListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.ui;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" * Panel containing the list of persons.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class ClientListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" private static final String FXML \u003d \"ClientListPanel.fxml\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private final Logger logger \u003d LogsCenter.getLogger(ClientListPanel.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private ListView\u003cClient\u003e clientListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * Creates a {@code PersonListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public ClientListPanel(ObservableList\u003cClient\u003e clientList) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" super(FXML);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" clientListView.setItems(clientList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" clientListView.setCellFactory(listView -\u003e new ClientListViewCell());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" class ClientListViewCell extends ListCell\u003cClient\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" protected void updateItem(Client client, boolean empty) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" super.updateItem(client, empty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" if (empty || client \u003d\u003d null) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" setGraphic(null);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" setText(null);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" } else {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" setGraphic(new ClientCard(client, getIndex() + 1).getRoot());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" public ListView\u003cClient\u003e getClientListView() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" return this.clientListView;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":53}},{"path":"src/main/java/seedu/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private PersonListPanel personListPanel;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" private ClientListPanel clientListPanel;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private StackPane personListPanelPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" @FXML","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" private StackPane clientListPanelPlaceholder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" clientListPanel \u003d new ClientListPanel(logic.getFilteredClientList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" clientListPanelPlaceholder.getChildren().add(clientListPanel.getRoot());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" void handleExit() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public PersonListPanel getPersonListPanel() {","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" return personListPanel;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" * @see seedu.address.logic.Logic#execute(String)","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"yongkheehou":8,"-":192}},{"path":"src/main/resources/view/ClientListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" \u003cpadding\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" \u003c/padding\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":33}},{"path":"src/main/resources/view/ClientListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" \u003cListView fx:id\u003d\"clientListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":8}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" \u003cStackPane fx:id\u003d\"clientListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"-":59}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.storage.JsonClientBookStorage;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.storage.JsonPropertyBookStorage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage clientBookStorage \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" new JsonClientBookStorage(temporaryFolder.resolve(\"clientbook.json\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" .resolve(\"userPrefs.json\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" JsonPropertyBookStorage propertyBookStorage \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" new JsonPropertyBookStorage(temporaryFolder.resolve(\"propertyBook.json\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, propertyBookStorage,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" clientBookStorage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"apollo-tan"},"content":" //TODO: Update test to reflect new ListCommand @apollo-tan","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"apollo-tan"},"content":" // @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"apollo-tan"},"content":" // public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"apollo-tan"},"content":" // String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"apollo-tan"},"content":" // assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"apollo-tan"},"content":" // }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"apollo-tan"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage clientBookStorage \u003d new JsonClientBookStorage(prefPath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"yongkheehou"},"content":" public void saveClientBook(ReadOnlyClientBook clientBook, Path filePath)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"yongkheehou"},"content":" throws IOException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" throw e;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" };","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"Virusrwj223"},"content":" JsonPropertyBookStorage propertyBookStorage \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"Virusrwj223"},"content":" new JsonPropertyBookStorage(temporaryFolder.resolve(\"propertyBook.json\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"Virusrwj223"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage, propertyBookStorage,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"Virusrwj223"},"content":" clientBookStorage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":" String addBuyerCommand \u003d AddBuyerCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":" + EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"yongkheehou"},"content":" Buyer expectedPerson \u003d new ClientBuilder(AMY).buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"yongkheehou"},"content":" expectedModel.addClient(expectedPerson);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"yongkheehou"},"content":" assertCommandFailure(addBuyerCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"yongkheehou":21,"Virusrwj223":13,"apollo-tan":12,"-":154}},{"path":"src/test/java/seedu/address/logic/MessagesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"class MessagesTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" void getErrorMessageForDuplicatePrefixes_singlePrefix_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" Prefix prefixPhone \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.getErrorMessageForDuplicatePrefixes(prefixPhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertEquals(Messages.MESSAGE_DUPLICATE_FIELDS + \"p/\", result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" void getErrorMessageForDuplicatePrefixes_multiplePrefixes_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Prefix prefixPhone \u003d new Prefix(\"p/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" Prefix prefixEmail \u003d new Prefix(\"e/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.getErrorMessageForDuplicatePrefixes(prefixPhone, prefixEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" assertEquals(Messages.MESSAGE_DUPLICATE_FIELDS + \"e/ p/\", result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" void formatBuyer_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Client buyer \u003d new Buyer(new Name(\"Alice Bee\"), new Phone(\"98765432\"), new Email(\"alice@example.com\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.format(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" String expected \u003d \"BUYER; Alice Bee; Phone: 98765432; Email: alice@example.com\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expected, result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" void formatSeller_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" Client seller \u003d new Seller(new Name(\"Bob Bee\"), new Phone(\"87654321\"), new Email(\"bob@example.com\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" String result \u003d Messages.format(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" String expected \u003d \"SELLER; Bob Bee; Phone: 87654321; Email: bob@example.com\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expected, result);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" void formatProperty_success() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" Property property \u003d new Property(new PostalCode(\"123456\"), new Unit(\"12-75\"));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" // Act","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" String result \u003d Messages.format(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" // Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" String expected \u003d \"PostalCode: 123456; Unit: 12-75\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expected, result);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":67,"Virusrwj223":16}},{"path":"src/test/java/seedu/address/logic/commands/AddBuyerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"class AddBuyerCommandTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private Buyer buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private Model model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" @BeforeEach","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" void setUp() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" buyer \u003d mock(Buyer.class); // Mocking the Buyer object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" model \u003d mock(Model.class); // Mocking the Model object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" void constructor_nullBuyer_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddBuyerCommand(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" void execute_buyerAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(buyer)).thenReturn(false);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(AddBuyerCommand.MESSAGE_SUCCESS_BUYER, Messages.format(buyer));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" CommandResult result \u003d addBuyerCommand.execute(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" verify(model).addClient(buyer); // Verifying that model.addClient() is called with the correct argument","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" void execute_duplicateBuyer_throwsCommandException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model to simulate the presence of a duplicate buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(buyer)).thenReturn(true);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" assertThrows(CommandException.class, () -\u003e addBuyerCommand.execute(model),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand.MESSAGE_DUPLICATE_BUYER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addBuyerCommand, addBuyerCommand); // Same object should return true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" void equals_sameBuyer_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand1 \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand2 \u003d new AddBuyerCommand(buyer); // Same buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addBuyerCommand1, addBuyerCommand2); // Different instances, same buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" void equals_differentBuyer_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Buyer differentBuyer \u003d mock(Buyer.class); // Different Buyer instance","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand1 \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand2 \u003d new AddBuyerCommand(differentBuyer); // Different buyer","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addBuyerCommand1, addBuyerCommand2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" void equals_differentObject_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" Client differentClient \u003d mock(Client.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand addBuyerCommand \u003d new AddBuyerCommand(buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addBuyerCommand, differentClient); // Comparing with a different type of object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":106}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class AddCommandIntegrationTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertCommandSuccess(new AddCommand(validPerson), model,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertCommandFailure(new AddCommand(personInList), model,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":5,"-":46}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" public Path getClientBookFilePath() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" public void addClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":" public void setClientBook(ReadOnlyClientBook newData) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" public ReadOnlyClientBook getClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" public boolean hasClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"yongkheehou"},"content":" public void deleteClient(Client target) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"yongkheehou"},"content":" public void setClient(Client target, Client editedClient) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"yongkheehou"},"content":" public ObservableList\u003cClient\u003e getFilteredClientList() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"yongkheehou"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"yongkheehou"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"yongkheehou"},"content":" public void updateFilteredClientList(Predicate\u003cClient\u003e predicate) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"Virusrwj223"},"content":" public Path getPropertyBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"Virusrwj223"},"content":" public ReadOnlyPropertyBook getPropertyBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"Virusrwj223"},"content":" public boolean hasProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"Virusrwj223"},"content":" @Override","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"Virusrwj223"},"content":" public void addProperty(Property property) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":50,"Virusrwj223":27,"-":206}},{"path":"src/test/java/seedu/address/logic/commands/AddPropertyCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"public class AddPropertyCommandTest {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" private Property property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" private Model model;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" @BeforeEach","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" void setUp() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" property \u003d mock(Property.class);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" model \u003d mock(Model.class);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" void constructor_nullSeller_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddPropertyCommand(null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" void execute_sellerAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" // Stubbing the behavior of model","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" when(model.hasProperty(property)).thenReturn(false);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d String.format(AddPropertyCommand.MESSAGE_SUCCESS, Messages.format(property));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" // Act","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" CommandResult result \u003d addPropertyCommand.execute(model);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" // Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" verify(model).addProperty(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" void execute_duplicateProperty_throwsCommandException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" // Stubbing the behavior of model to simulate the presence of a duplicate property","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" when(model.hasProperty(property)).thenReturn(true);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(CommandException.class, () -\u003e addPropertyCommand.execute(model),","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(addPropertyCommand, addPropertyCommand);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" void equals_sameSeller_returnsTrue() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand2 \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(addPropertyCommand, addPropertyCommand2); // Different instances, same seller","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" void equals_differentSeller_returnsFalse() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" Property differentProperty \u003d mock(Property.class); // Different Seller instance","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand2 \u003d new AddPropertyCommand(differentProperty);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" assertNotEquals(addPropertyCommand, addPropertyCommand2);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" void equals_differentObject_returnsFalse() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" // Arrange","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand addPropertyCommand \u003d new AddPropertyCommand(property);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" assertNotEquals(addPropertyCommand, new Object()); // Comparing with a different type of object","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":103}},{"path":"src/test/java/seedu/address/logic/commands/AddSellerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.verify;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"class AddSellerCommandTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private Seller seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private Model model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" @BeforeEach","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" void setUp() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" seller \u003d mock(Seller.class); // Mocking the Seller object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" model \u003d mock(Model.class); // Mocking the Model object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" void constructor_nullSeller_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddSellerCommand(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" void execute_sellerAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(seller)).thenReturn(false);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(AddSellerCommand.MESSAGE_SUCCESS_SELLER, Messages.format(seller));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Act","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" CommandResult result \u003d addSellerCommand.execute(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" verify(model).addClient(seller); // Verifying that model.addClient() is called with the correct argument","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" void execute_duplicateSeller_throwsCommandException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" // Stubbing the behavior of model to simulate the presence of a duplicate seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" when(model.hasClient(seller)).thenReturn(true);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" assertThrows(CommandException.class, () -\u003e addSellerCommand.execute(model),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand.MESSAGE_DUPLICATE_SELLER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" void equals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addSellerCommand, addSellerCommand); // Same object should return true","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" void equals_sameSeller_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand1 \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand2 \u003d new AddSellerCommand(seller); // Same seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" assertEquals(addSellerCommand1, addSellerCommand2); // Different instances, same seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" void equals_differentSeller_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" Seller differentSeller \u003d mock(Seller.class); // Different Seller instance","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand1 \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand2 \u003d new AddSellerCommand(differentSeller); // Different seller","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addSellerCommand1, addSellerCommand2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" void equals_differentObject_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand addSellerCommand \u003d new AddSellerCommand(seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(addSellerCommand, new Object()); // Comparing with a different type of object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":104}},{"path":"src/test/java/seedu/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":5,"-":30}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_POSTALCODE_ADMIRALTY \u003d \"654321\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_POSTALCODE_BEDOK \u003d \"321456\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_UNIT_ADMIRALTY \u003d \"02-22\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" public static final String VALID_UNIT_BEDOK \u003d \"11-12\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" public static final String POSTALCODE_DESC_ADMIRALTY \u003d \" \" + PREFIX_POSTALCODE + VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" public static final String POSTALCODE_DESC_BEDOK \u003d \" \" + PREFIX_POSTALCODE + VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" public static final String UNIT_DESC_ADMIRALTY \u003d \" \" + PREFIX_UNITNUMBER + VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" public static final String UNIT_DESC_BEDOK \u003d \" \" + PREFIX_UNITNUMBER + VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" public static final String INVALID_POSTALCODE_DESC \u003d \" \" + PREFIX_POSTALCODE + \"1234\"; //PostalCode with few numbers","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" public static final String INVALID_UNIT_DESC \u003d \" \" + PREFIX_UNITNUMBER + \"11 11\"; //\u0027-\u0027 delimiter missing","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":12,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/DeleteBuyerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.DeleteBuyerCommand.MESSAGE_DELETE_PERSON_SUCCESS;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommandTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" getTypicalPropertyBook(), getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" public void execute_phoneNumberFound_assertCommandSuccess() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" final Phone phoneNumber \u003d new Phone(\"94351253\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand deleteBuyerCommand \u003d new DeleteBuyerCommand(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isBuyer)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new AssertionError(\"Phone number not found in the model\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" assertCommandSuccess(deleteBuyerCommand, model, expectedMessage, model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" final DeleteBuyerCommand standardCommand \u003d new DeleteBuyerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand commandWithSameValues \u003d new DeleteBuyerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" // different buyer -\u003e return false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new DeleteBuyerCommand(new Phone(VALID_PHONE_BOB))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":3,"thony-ui":47}},{"path":"src/test/java/seedu/address/logic/commands/DeleteCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class DeleteCommandTest {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Messages.format(personToDelete));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertCommandSuccess(deleteCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(outOfBoundIndex);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertCommandFailure(deleteCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommand \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" DeleteCommand deleteSecondCommand \u003d new DeleteCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" DeleteCommand deleteFirstCommandCopy \u003d new DeleteCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" DeleteCommand deleteCommand \u003d new DeleteCommand(targetIndex);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" String expected \u003d DeleteCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expected, deleteCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":7,"-":117}},{"path":"src/test/java/seedu/address/logic/commands/DeletePropertyCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode1 \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode2 \u003d new PostalCode(VALID_POSTALCODE_BEDOK);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" Unit unit1 \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":" Unit unit2 \u003d new Unit(VALID_UNIT_BEDOK);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deleteFirstCommand \u003d new DeletePropertyCommand(postalCode1, unit1);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deleteSecondCommand \u003d new DeletePropertyCommand(postalCode2, unit2);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deleteFirstCommandCopy \u003d new DeletePropertyCommand(postalCode1, unit1);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":" // different property -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jolwnn"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jolwnn"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jolwnn"},"content":" PostalCode postalCode \u003d new PostalCode(VALID_POSTALCODE_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jolwnn"},"content":" Unit unit \u003d new Unit(VALID_UNIT_ADMIRALTY);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand deletePropertyCommand \u003d new DeletePropertyCommand(postalCode, unit);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jolwnn"},"content":" String expected \u003d DeletePropertyCommand.class.getCanonicalName()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jolwnn"},"content":" + \"{postalCode\u003d\" + postalCode + \", unitNumber\u003d\" + unit + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jolwnn"},"content":" assertEquals(expected, deletePropertyCommand.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":59}},{"path":"src/test/java/seedu/address/logic/commands/DeleteSellerCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.commands.DeleteSellerCommand.MESSAGE_DELETE_PERSON_SUCCESS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommandTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" public void execute() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" final Phone phoneNumber \u003d new Phone(\"98765432\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand deleteSellerCommand \u003d new DeleteSellerCommand(phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" Client personToDelete \u003d model.getFilteredClientList().stream()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" .filter(Client::isSeller)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" .filter(person -\u003e person.getPhone().equals(phoneNumber))","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" .findFirst().orElseThrow(() -\u003e new AssertionError(\"Phone number not found in the model\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" System.out.println(expectedMessage);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" assertCommandSuccess(deleteSellerCommand, model, expectedMessage, model);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"thony-ui"},"content":" final DeleteSellerCommand standardCommand \u003d new DeleteSellerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"thony-ui"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand commandWithSameValues \u003d new DeleteSellerCommand(new Phone(VALID_PHONE_AMY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"thony-ui"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"thony-ui"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"thony-ui"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"thony-ui"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"thony-ui"},"content":" // different buyer -\u003e return false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"thony-ui"},"content":" assertFalse(standardCommand.equals(new DeleteSellerCommand(new Phone(VALID_PHONE_BOB))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":3,"thony-ui":50}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" new PropertyBook(model.getPropertyBook()), new ClientBook(model.getClientBook()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" new PropertyBook(model.getPropertyBook()), new ClientBook(model.getClientBook()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" new PropertyBook(model.getPropertyBook()), new ClientBook(model.getClientBook()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs(),","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" new PropertyBook(model.getPropertyBook()), new ClientBook(model.getClientBook()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":6,"Virusrwj223":8,"-":179}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" FindCommand findFirstCommand \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" FindCommand findSecondCommand \u003d new FindCommand(secondPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" FindCommand findFirstCommandCopy \u003d new FindCommand(firstPredicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand command \u003d new FindCommand(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" FindCommand findCommand \u003d new FindCommand(predicate);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" String expected \u003d FindCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":1,"Virusrwj223":5,"-":89}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"apollo-tan"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"apollo-tan"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"apollo-tan"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs(), getTypicalPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" getTypicalClientBook());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs(), model.getPropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" model.getClientBook());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"apollo-tan"},"content":" public void testEnumValues() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"apollo-tan"},"content":" assertEquals(4, ListCommand.Key.values().length);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"apollo-tan"},"content":" assertTrue(Arrays.asList(ListCommand.Key.values()).contains(ListCommand.Key.BUYERS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"apollo-tan"},"content":" assertTrue(Arrays.asList(ListCommand.Key.values()).contains(ListCommand.Key.SELLERS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"apollo-tan"},"content":" assertTrue(Arrays.asList(ListCommand.Key.values()).contains(ListCommand.Key.CLIENTS));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"apollo-tan"},"content":" assertTrue(Arrays.asList(ListCommand.Key.values()).contains(ListCommand.Key.PROPERTIES));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"apollo-tan"},"content":" //TODO: Update test to reflect new ListCommand @apollo-tan","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"apollo-tan"},"content":" public void listCommandGeneration() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.BUYERS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"apollo-tan"},"content":" // Check if command is an instance of ListCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"apollo-tan"},"content":" assertTrue(command instanceof ListCommand, \"The command should be an instance of ListCommand\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"apollo-tan"},"content":" // TODO: Add more robust testing","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteBuyers() throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.BUYERS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all buyers\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteSellers() throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.SELLERS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all sellers\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteClients() throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.CLIENTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all clients\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"apollo-tan"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"apollo-tan"},"content":" public void testExecuteProperties() throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"apollo-tan"},"content":" Command command \u003d new ListCommand(ListCommand.Key.PROPERTIES);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"apollo-tan"},"content":" CommandResult result \u003d command.execute(this.model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"apollo-tan"},"content":" assertEquals(result.getFeedbackToUser(), \"Listed all properties\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"apollo-tan"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"apollo-tan"},"content":" // @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"apollo-tan"},"content":" // public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"apollo-tan"},"content":" // assertCommandSuccess(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"apollo-tan"},"content":" // new ListCommand(ListCommand.Key.SELLERS),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"apollo-tan"},"content":" // model,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"apollo-tan"},"content":" // ListCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"apollo-tan"},"content":" // expectedModel","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"apollo-tan"},"content":" // );","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"apollo-tan"},"content":" // }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"apollo-tan"},"content":" //","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"apollo-tan"},"content":" // @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"apollo-tan"},"content":" // public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"apollo-tan"},"content":" // showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"apollo-tan"},"content":" // assertCommandSuccess(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"apollo-tan"},"content":" // new ListCommand(ListCommand.Key.SELLERS),","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"apollo-tan"},"content":" // model,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"apollo-tan"},"content":" // ListCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"apollo-tan"},"content":" // expectedModel","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"apollo-tan"},"content":" // );","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"apollo-tan"},"content":" // }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":2,"Virusrwj223":4,"apollo-tan":68,"-":32}},{"path":"src/test/java/seedu/address/logic/parser/AddBuyerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"public class AddBuyerCommandParserTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private AddBuyerCommandParser parser \u003d new AddBuyerCommandParser();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Buyer expectedBuyer \u003d new ClientBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // normal input with all fields","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" new AddBuyerCommand(expectedBuyer));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" public void parse_missingFields_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddBuyerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // missing name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // missing phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // missing email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" // invalid name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // invalid phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + INVALID_PHONE_DESC + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" // invalid email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" public void parse_duplicatePrefixes_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageName \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" String expectedMessagePhone \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageEmail \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" // duplicate name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" expectedMessageName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" // duplicate phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" expectedMessagePhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" // duplicate email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" expectedMessageEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":91}},{"path":"src/test/java/seedu/address/logic/parser/AddPropertyCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_POSTALCODE_DESC;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_UNIT_DESC;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.POSTALCODE_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.UNIT_DESC_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.AddPropertyCommand;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"public class AddPropertyCommandParserTest {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" private AddPropertyCommandParser parser \u003d new AddPropertyCommandParser();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" Property expectedProperty \u003d new PropertyBuilder().withPostalCode(VALID_POSTALCODE_ADMIRALTY)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" .withUnit(VALID_UNIT_ADMIRALTY).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" // normal input with all fields","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" assertParseSuccess(parser, POSTALCODE_DESC_ADMIRALTY + UNIT_DESC_ADMIRALTY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" new AddPropertyCommand(expectedProperty));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" public void parse_missingFields_failure() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddPropertyCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" // missing PostalCode prefix","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, UNIT_DESC_ADMIRALTY, expectedMessage);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" // missing unit prefix","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, POSTALCODE_DESC_ADMIRALTY, expectedMessage);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" // invalid postal code","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, INVALID_POSTALCODE_DESC + UNIT_DESC_ADMIRALTY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" PostalCode.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" // invalid unit","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, POSTALCODE_DESC_ADMIRALTY + INVALID_UNIT_DESC,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" Unit.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" public void parse_duplicatePrefixes_failure() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessagePostalCode \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_POSTALCODE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessageUnit \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_UNITNUMBER);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" // duplicate name prefix","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, POSTALCODE_DESC_ADMIRALTY + POSTALCODE_DESC_ADMIRALTY + UNIT_DESC_ADMIRALTY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" expectedMessagePostalCode);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" // duplicate phone prefix","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" assertParseFailure(parser, POSTALCODE_DESC_ADMIRALTY + UNIT_DESC_ADMIRALTY + UNIT_DESC_ADMIRALTY,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" expectedMessageUnit);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-13","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":74}},{"path":"src/test/java/seedu/address/logic/parser/AddSellerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":"public class AddSellerCommandParserTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" private AddSellerCommandParser parser \u003d new AddSellerCommandParser();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" Seller expectedSeller \u003d new ClientBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).buildSeller();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" // normal input with all fields","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" new AddSellerCommand(expectedSeller));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" public void parse_missingFields_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddSellerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" // missing name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" // missing phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + EMAIL_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" // missing email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY, expectedMessage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" // invalid name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // invalid phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + INVALID_PHONE_DESC + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" // invalid email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" public void parse_duplicatePrefixes_failure() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageName \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" String expectedMessagePhone \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" String expectedMessageEmail \u003d Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" // duplicate name prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" expectedMessageName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // duplicate phone prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" expectedMessagePhone);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" // duplicate email prefix","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" assertParseFailure(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + EMAIL_DESC_AMY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" expectedMessageEmail);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":90}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.ALICE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.DANIEL;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddBuyerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.logic.commands.AddPropertyCommand;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.logic.commands.AddSellerCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" public void parseCommand_addBuyer() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" Buyer alice \u003d new ClientBuilder(ALICE).withEmail(ALICE.getEmail().toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" .withPhone(ALICE.getPhone().toString()).buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand command \u003d (AddBuyerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" AddBuyerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + ALICE.getName() + \" \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_PHONE + ALICE.getPhone() + \" \" + PREFIX_EMAIL + ALICE.getEmail()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" assertEquals(new AddBuyerCommand(alice), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" public void parseCommand_addSeller() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" Seller daniel \u003d new ClientBuilder(DANIEL).withEmail(DANIEL.getEmail().toString())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" .withPhone(DANIEL.getPhone().toString()).buildSeller();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand command \u003d (AddSellerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" AddSellerCommand.COMMAND_WORD + \" \" + PREFIX_NAME + DANIEL.getName() + \" \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" + PREFIX_PHONE + DANIEL.getPhone() + \" \" + PREFIX_EMAIL + DANIEL.getEmail()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" assertEquals(new AddSellerCommand(daniel), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"thony-ui"},"content":" public void parseCommand_deleteBuyer() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"thony-ui"},"content":" final String phoneNumber \u003d \"12345678\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand command \u003d (DeleteBuyerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"thony-ui"},"content":" DeleteBuyerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"thony-ui"},"content":" assertEquals(new DeleteBuyerCommand(new Phone(phoneNumber)), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"apollo-tan"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"thony-ui"},"content":" public void parseCommand_deleteSeller() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"thony-ui"},"content":" final String phoneNumber \u003d \"12345678\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand command \u003d (DeleteSellerCommand) parser.parseCommand(","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"thony-ui"},"content":" DeleteSellerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + phoneNumber);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"thony-ui"},"content":" assertEquals(new DeleteSellerCommand(new Phone(phoneNumber)), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Virusrwj223"},"content":" public void parseCommand_addProperty() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Virusrwj223"},"content":" Property property \u003d new PropertyBuilder(ADMIRALTY).build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand command \u003d (AddPropertyCommand) parser.parseCommand(","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" AddPropertyCommand.COMMAND_WORD + \" \" + PREFIX_POSTALCODE + ADMIRALTY.getPostalCode() + \" \"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Virusrwj223"},"content":" + PREFIX_UNITNUMBER + ADMIRALTY.getUnit()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Virusrwj223"},"content":" );","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(new AddPropertyCommand(property), command);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"apollo-tan"},"content":" //TODO: Update test to reflect new ListCommand @apollo-tan","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/buyers\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/sellers\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/properties\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"apollo-tan"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" k/clients\") instanceof ListCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"yongkheehou":33,"Virusrwj223":17,"apollo-tan":6,"thony-ui":19,"-":99}},{"path":"src/test/java/seedu/address/logic/parser/DeleteBuyerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteBuyerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"public class DeleteBuyerCommandParserTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":" private DeleteBuyerCommandParser parser \u003d new DeleteBuyerCommandParser();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" private final String nonEmptyphoneNumber \u003d \"12345678\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" public void parse_phoneNumberSpecified_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" // Test for valid phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteBuyerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + nonEmptyphoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" assertParseSuccess(parser, userInput, new DeleteBuyerCommand(new Phone(nonEmptyphoneNumber)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" public void parse_emptyPhoneNumber_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" // Test for empty phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteBuyerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteBuyerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteBuyerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" // no parameters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, DeleteBuyerCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":38}},{"path":"src/test/java/seedu/address/logic/parser/DeletePropertyCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jolwnn"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_POSTALCODE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_UNITNUMBER;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jolwnn"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jolwnn"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jolwnn"},"content":"import seedu.address.logic.commands.DeletePropertyCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jolwnn"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jolwnn"},"content":"public class DeletePropertyCommandParserTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jolwnn"},"content":" private DeletePropertyCommandParser parser \u003d new DeletePropertyCommandParser();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jolwnn"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jolwnn"},"content":" // Test for valid postal code and unit number","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \" \" + PREFIX_POSTALCODE + \"118420 \" + PREFIX_UNITNUMBER + \"08-08\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jolwnn"},"content":" PostalCode validPostalCode \u003d new PostalCode(\"118420\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jolwnn"},"content":" Unit validUnitNumber \u003d new Unit(\"08-08\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jolwnn"},"content":" DeletePropertyCommand expectedCommand \u003d new DeletePropertyCommand(validPostalCode, validUnitNumber);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jolwnn"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jolwnn"},"content":" public void parse_invalidPostalCodeFormat_failure() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jolwnn"},"content":" // Test for invalid postal code format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \" \" + PREFIX_POSTALCODE + \"abc123\" + \" \" + PREFIX_UNITNUMBER + \"08-08\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d PostalCode.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jolwnn"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jolwnn"},"content":" public void parse_invalidUnitNumberFormat_failure() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jolwnn"},"content":" // Test for invalid unit number format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jolwnn"},"content":" String userInput \u003d \" \" + PREFIX_POSTALCODE + \"118420\" + \" \" + PREFIX_UNITNUMBER + \"808\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jolwnn"},"content":" String expectedMessage \u003d Unit.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jolwnn"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jolwnn"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jolwnn"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jolwnn"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"jolwnn":46}},{"path":"src/test/java/seedu/address/logic/parser/DeleteSellerCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"thony-ui"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"thony-ui"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"thony-ui"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"thony-ui"},"content":"import seedu.address.logic.commands.DeleteSellerCommand;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"thony-ui"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"thony-ui"},"content":"public class DeleteSellerCommandParserTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"thony-ui"},"content":" private DeleteSellerCommandParser parser \u003d new DeleteSellerCommandParser();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"thony-ui"},"content":" private final String nonEmptyphoneNumber \u003d \"12345678\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"thony-ui"},"content":" public void parse_phoneNumberSpecified_success() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"thony-ui"},"content":" // Test for valid phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteSellerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + nonEmptyphoneNumber;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"thony-ui"},"content":" assertParseSuccess(parser, userInput, new DeleteSellerCommand(new Phone(nonEmptyphoneNumber)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"thony-ui"},"content":" public void parse_emptyPhoneNumber_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"thony-ui"},"content":" // Test for empty phone number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"thony-ui"},"content":" String userInput \u003d DeleteSellerCommand.COMMAND_WORD + \" \" + PREFIX_PHONE + \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSellerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, userInput, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"thony-ui"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"thony-ui"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"thony-ui"},"content":" public void parse_missingCompulsoryField_failure() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"thony-ui"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteSellerCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"thony-ui"},"content":" // no parameters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"thony-ui"},"content":" assertParseFailure(parser, DeleteSellerCommand.COMMAND_WORD, expectedMessage);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"thony-ui"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"thony-ui"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"thony-ui":38}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" private static final String INVALID_POSTALCODE \u003d \"123 45\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" private static final String INVALID_UNIT \u003d \"11\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" private static final String VALID_POSTALCODE \u003d \"123456\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" private static final String VALID_UNIT \u003d \"11-11\";","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Test for parsing index","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Address","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" // Tests for person Email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" // Tests for Tags","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"yongkheehou"},"content":" // Tests for client Name","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseClientName(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseClientName(INVALID_NAME));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_validValueWithoutWhitespace_returnsClientName() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Name expectedName \u003d new seedu.address.model.client.Name(VALID_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedName, ParserUtil.parseClientName(VALID_NAME));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"yongkheehou"},"content":" public void parseClientName_validValueWithWhitespace_returnsTrimmedClientName() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"yongkheehou"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Name expectedName \u003d new seedu.address.model.client.Name(VALID_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedName, ParserUtil.parseClientName(nameWithWhitespace));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"yongkheehou"},"content":" // Tests for client Phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseClientPhone(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseClientPhone(INVALID_PHONE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_validValueWithoutWhitespace_returnsClientPhone() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Phone expectedPhone \u003d new seedu.address.model.client.Phone(VALID_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedPhone, ParserUtil.parseClientPhone(VALID_PHONE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"yongkheehou"},"content":" public void parseClientPhone_validValueWithWhitespace_returnsTrimmedClientPhone() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"yongkheehou"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Phone expectedPhone \u003d new seedu.address.model.client.Phone(VALID_PHONE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedPhone, ParserUtil.parseClientPhone(phoneWithWhitespace));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"yongkheehou"},"content":" // Tests for client Email","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseClientEmail((String) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseClientEmail(INVALID_EMAIL));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_validValueWithoutWhitespace_returnsClientEmail() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Email expectedEmail \u003d new seedu.address.model.client.Email(VALID_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedEmail, ParserUtil.parseClientEmail(VALID_EMAIL));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"yongkheehou"},"content":" public void parseClientEmail_validValueWithWhitespace_returnsTrimmedClientEmail() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"yongkheehou"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"yongkheehou"},"content":" seedu.address.model.client.Email expectedEmail \u003d new seedu.address.model.client.Email(VALID_EMAIL);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedEmail, ParserUtil.parseClientEmail(emailWithWhitespace));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"Virusrwj223"},"content":" // Tests for property PostalCode","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyPostalCode_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePostalCode((String) null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyPostalCode_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePostalCode(INVALID_POSTALCODE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyPostalCode_validValueWithoutWhitespace_returnsClientEmail() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"Virusrwj223"},"content":" PostalCode expectedPostalCode \u003d new PostalCode(VALID_POSTALCODE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedPostalCode, ParserUtil.parsePostalCode(VALID_POSTALCODE));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyPostalCode_validValueWithWhitespace_returnsTrimmedClientEmail() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"Virusrwj223"},"content":" String postalCodeWithWhitespace \u003d WHITESPACE + VALID_POSTALCODE + WHITESPACE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"Virusrwj223"},"content":" PostalCode expectedPostalCode \u003d new PostalCode(VALID_POSTALCODE);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedPostalCode, ParserUtil.parsePostalCode(postalCodeWithWhitespace));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"Virusrwj223"},"content":" // Tests for property Unit","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyUnit_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseUnit((String) null));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyUnit_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseUnit(INVALID_UNIT));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyUnit_validValueWithoutWhitespace_returnsClientEmail() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"Virusrwj223"},"content":" Unit expectedUnit \u003d new Unit(VALID_UNIT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUnit, ParserUtil.parseUnit(VALID_UNIT));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"Virusrwj223"},"content":" public void parsePropertyUnit_validValueWithWhitespace_returnsTrimmedClientEmail() throws Exception {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"Virusrwj223"},"content":" String unitWithWhitespace \u003d WHITESPACE + VALID_UNIT + WHITESPACE;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"Virusrwj223"},"content":" Unit expectedUnit \u003d new Unit(VALID_UNIT);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUnit, ParserUtil.parseUnit(unitWithWhitespace));","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"yongkheehou":78,"Virusrwj223":54,"-":192}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.CARL;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.DANIEL;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBookBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" assertEquals(new ClientBook(), new ClientBook(modelManager.getClientBook()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" userPrefs.setClientBookFilePath(Paths.get(\"client/book/file/path\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" userPrefs.setClientBookFilePath(Paths.get(\"new/client/book/file/path\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setClientBookFilePath(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" public void setClientBookFilePath_validPath_setsClientBookFilePath() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Path path \u003d Paths.get(\"data/clientbook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" modelManager.setClientBookFilePath(path);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" assertEquals(path, modelManager.getClientBookFilePath());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook Related Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook Related Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" public void hasClient_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasClient(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" public void hasClient_clientNotInClientBook_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" assertFalse(modelManager.hasClient(CARL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" public void hasClient_clientInClientBook_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" modelManager.addClient(CARL);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertTrue(modelManager.hasClient(CARL));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" public void getFilteredClientList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredClientList().remove(0));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Equality Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":" ClientBook clientBook \u003d new ClientBookBuilder().withClient(CARL).withClient(DANIEL).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook propertyBook \u003d new PropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" ClientBook differentClientBook \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Virusrwj223"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs, propertyBook, clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Virusrwj223"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs, propertyBook, clientBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs, new PropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"Virusrwj223"},"content":" differentClientBook)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs, new PropertyBook(), clientBook)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs, new PropertyBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"Virusrwj223"},"content":" clientBook)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setPropertyBookFilePath(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"Virusrwj223"},"content":" public void setPropertyBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"Virusrwj223"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"Virusrwj223"},"content":" modelManager.setPropertyBookFilePath(path);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(path, modelManager.getPropertyBookFilePath());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"Virusrwj223"},"content":" public void hasProperty_propertyInAddressBook_returnsTrue() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"Virusrwj223"},"content":" modelManager.addProperty(BEDOK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(modelManager.hasProperty(BEDOK));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"yongkheehou":47,"Virusrwj223":27,"-":127}},{"path":"src/test/java/seedu/address/model/client/BuyerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"class BuyerTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_sameClient_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" assertTrue(buyer1.isSameClient(buyer1));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_samePhoneDifferentBuyer_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name2, phone, email2); // Different name and email, same phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" assertTrue(buyer1.isSameClient(buyer2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_differentPhone_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name1, phone2, email2); // Different phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" assertFalse(buyer1.isSameClient(buyer2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" assertEquals(buyer, buyer);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameAttributes_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name1, phone1, email1); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertEquals(buyer1, buyer2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" void testEquals_differentAttributes_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(buyer1, buyer2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_sameAttributes_returnsSameHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name, phone, email); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" assertEquals(buyer1.hashCode(), buyer2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_differentAttributes_returnsDifferentHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer1 \u003d new Buyer(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer2 \u003d new Buyer(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(buyer1.hashCode(), buyer2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" void testToString_correctFormat() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" when(name.toString()).thenReturn(\"John Doe\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" when(phone.toString()).thenReturn(\"12345678\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" when(email.toString()).thenReturn(\"john@example.com\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" Buyer buyer \u003d new Buyer(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" String expectedString \u003d \"seedu.address.model.client.Buyer\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" + \"{client type\u003dBUYER, name\u003dJohn Doe, phone\u003d12345678, email\u003djohn@example.com}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedString, buyer.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":154}},{"path":"src/test/java/seedu/address/model/client/ClientTypesTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class ClientTypesTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void getType_buyer_returnsCorrectString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertEquals(\"buyer\", ClientTypes.BUYER.getType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void getType_seller_returnsCorrectString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" assertEquals(\"seller\", ClientTypes.SELLER.getType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_validBuyer_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" assertTrue(ClientTypes.isValidClientType(\"BUYER\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_validSeller_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertTrue(ClientTypes.isValidClientType(\"SELLER\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_invalidType_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"INVALID\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_lowerCaseBuyer_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"buyer\")); // Case-sensitive check","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_lowerCaseSeller_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"seller\")); // Case-sensitive check","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_nullValue_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" public void isValidClientType_emptyString_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" assertFalse(ClientTypes.isValidClientType(\"\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":55}},{"path":"src/test/java/seedu/address/model/client/EmailTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class EmailTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new Email(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void constructor_invalidEmail_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" String invalidEmail \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Email(invalidEmail));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public void isValidEmail() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // null email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e Email.isValidEmail(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" // blank email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" // missing parts","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"@example.com\")); // missing local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjackexample.com\")); // missing \u0027@\u0027 symbol","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@\")); // missing domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" // invalid parts","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-\")); // invalid domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam_ple.com\")); // underscore in domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peter jack@example.com\")); // spaces in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@exam ple.com\")); // spaces in domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\" peterjack@example.com\")); // leading space","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com \")); // trailing space","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@@example.com\")); // double \u0027@\u0027 symbol","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peter@jack@example.com\")); // \u0027@\u0027 symbol in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"-peterjack@example.com\")); // local part starts with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack-@example.com\")); // local part ends with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peter..jack@example.com\")); // local part has two consecutive periods","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example@com\")); // \u0027@\u0027 symbol in domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@.example.com\")); // domain name starts with a period","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com.\")); // domain name ends with a period","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@-example.com\")); // domain name starts with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.com-\")); // domain name ends with a hyphen","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Email.isValidEmail(\"peterjack@example.c\")); // top level domain has less than two chars","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // valid email","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack_1190@example.com\")); // underscore in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack.1190@example.com\")); // period in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack+1190@example.com\")); // \u0027+\u0027 symbol in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"PeterJack-1190@example.com\")); // hyphen in local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"a@bc\")); // minimal","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"test@localhost\")); // alphabets only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"123@145\")); // numeric local part and domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"a1+be.d@example1.com\")); // mixture of alphanumeric and special characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"peter_jack@very-very-very-long-example.com\")); // long domain name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"if.you.dream.it_you.can.do.it@example.com\")); // long local part","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Email.isValidEmail(\"e1234567@u.nus.edu\")); // more than one period in domain","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d new Email(\"valid@email\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" assertTrue(email.equals(new Email(\"valid@email\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" assertTrue(email.equals(email));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" assertFalse(email.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertFalse(email.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" assertFalse(email.equals(new Email(\"other.valid@email\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":88}},{"path":"src/test/java/seedu/address/model/client/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class NameTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public void isValidName() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // null name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" // invalid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" // valid name","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/test/java/seedu/address/model/client/PhoneTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"public class PhoneTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e new Phone(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public void constructor_invalidPhone_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" String invalidPhone \u003d \"\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Phone(invalidPhone));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" public void isValidPhone() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" // null phone number","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e Phone.isValidPhone(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" // invalid phone numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"\")); // empty string","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\" \")); // spaces only","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"91\")); // less than 3 numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"phone\")); // non-numeric","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"9011p041\")); // alphabets within digits","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(Phone.isValidPhone(\"9312 1534\")); // spaces within digits","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" // valid phone numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Phone.isValidPhone(\"911\")); // exactly 3 numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Phone.isValidPhone(\"93121534\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" assertTrue(Phone.isValidPhone(\"124293842033123\")); // long phone numbers","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d new Phone(\"999\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" assertTrue(phone.equals(new Phone(\"999\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" assertTrue(phone.equals(phone));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertFalse(phone.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" assertFalse(phone.equals(5.0f));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertFalse(phone.equals(new Phone(\"995\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":60}},{"path":"src/test/java/seedu/address/model/client/SellerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.mock;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static org.mockito.Mockito.when;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"class SellerTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_sameClient_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" assertTrue(seller1.isSameClient(seller1));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_samePhoneDifferentSeller_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name2, phone, email2); // Different name and email, same phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" assertTrue(seller1.isSameClient(seller2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" void testIsSameClient_differentPhone_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name1, phone2, email2); // Different phone","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" assertFalse(seller1.isSameClient(seller2));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameObject_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" Seller seller \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" assertEquals(seller, seller);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" void testEquals_sameAttributes_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name1, phone1, email1); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" assertEquals(seller1, seller2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" void testEquals_differentAttributes_returnsFalse() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(seller1, seller2);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_sameAttributes_returnsSameHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name, phone, email); // Same attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" assertEquals(seller1.hashCode(), seller2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" void testHashCode_differentAttributes_returnsDifferentHashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" Name name1 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":" Phone phone1 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" Email email1 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" Name name2 \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" Phone phone2 \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" Email email2 \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" Seller seller1 \u003d new Seller(name1, phone1, email1);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":" Seller seller2 \u003d new Seller(name2, phone2, email2); // Different attributes","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertNotEquals(seller1.hashCode(), seller2.hashCode());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" void testToString_correctFormat() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" // Arrange","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" Name name \u003d mock(Name.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" Phone phone \u003d mock(Phone.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" Email email \u003d mock(Email.class);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" when(name.toString()).thenReturn(\"Jane Smith\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":" when(phone.toString()).thenReturn(\"87654321\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" when(email.toString()).thenReturn(\"jane@example.com\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" Seller seller \u003d new Seller(name, phone, email);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":" // Act \u0026 Assert","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" String expectedString \u003d \"seedu.address.model.client.Seller\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" + \"{client type\u003dSELLER, name\u003dJane Smith, phone\u003d87654321, email\u003djane@example.com}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedString, seller.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"yongkheehou":154}},{"path":"src/test/java/seedu/address/model/client/UniqueClientListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.ALICE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.BOB;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.ClientNotFoundException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.exceptions.DuplicateClientException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.ClientBuilder;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"public class UniqueClientListTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private final UniqueClientList uniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public void contains_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.contains(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public void contains_personNotInList_returnsFalse() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" assertFalse(uniqueClientList.contains(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" public void contains_personInList_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" assertTrue(uniqueClientList.contains(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" public void contains_personWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withEmail(VALID_EMAIL_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" .buildBuyer();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" assertTrue(uniqueClientList.contains(editedAlice));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" public void add_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.add(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" public void add_duplicateClient_throwsDuplicateClientException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e uniqueClientList.add(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" public void setClient_nullTargetClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClient(null, ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" public void setClient_nullEditedClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClient(ALICE, null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" public void setClient_targetClientNotInList_throwsClientNotFoundException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ClientNotFoundException.class, () -\u003e uniqueClientList.setClient(ALICE, ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientIsSameClient_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClient(ALICE, ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientHasSameIdentity_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" Client editedAlice \u003d new ClientBuilder(ALICE).withEmail(VALID_EMAIL_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" .buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClient(ALICE, editedAlice);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(editedAlice);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientHasDifferentIdentity_success() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClient(ALICE, BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"yongkheehou"},"content":" public void setClient_editedClientHasNonUniqueIdentity_throwsDuplicateClientException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e uniqueClientList.setClient(ALICE, BOB));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"yongkheehou"},"content":" public void remove_nullClient_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.remove(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"yongkheehou"},"content":" public void remove_personDoesNotExist_throwsClientNotFoundException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ClientNotFoundException.class, () -\u003e uniqueClientList.remove(ALICE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"yongkheehou"},"content":" public void remove_existingClient_removesClient() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.remove(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"yongkheehou"},"content":" public void setClients_nullUniqueClientList_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClients((UniqueClientList) null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"yongkheehou"},"content":" public void setClients_uniqueClientList_replacesOwnListWithProvidedUniqueClientList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClients(expectedUniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"yongkheehou"},"content":" public void setClients_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"yongkheehou"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueClientList.setClients((List\u003cClient\u003e) null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"yongkheehou"},"content":" public void setClients_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.add(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"yongkheehou"},"content":" List\u003cClient\u003e personList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"yongkheehou"},"content":" uniqueClientList.setClients(personList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"yongkheehou"},"content":" UniqueClientList expectedUniqueClientList \u003d new UniqueClientList();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"yongkheehou"},"content":" expectedUniqueClientList.add(BOB);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"yongkheehou"},"content":" assertEquals(expectedUniqueClientList, uniqueClientList);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"yongkheehou"},"content":" public void setClients_listWithDuplicateClients_throwsDuplicateClientException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"yongkheehou"},"content":" List\u003cClient\u003e listWithDuplicateClients \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e uniqueClientList.setClients(listWithDuplicateClients));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"yongkheehou"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"yongkheehou"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"yongkheehou"},"content":" -\u003e uniqueClientList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"yongkheehou"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"yongkheehou"},"content":" assertEquals(uniqueClientList.asUnmodifiableObservableList().toString(), uniqueClientList.toString());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":175}},{"path":"src/test/java/seedu/address/model/client/exceptions/ClientNotFoundExceptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"public class ClientNotFoundExceptionTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" public void clientNotFoundException_isThrown() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" // Test that the ClientNotFoundException can be thrown","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" assertThrows(ClientNotFoundException.class, () -\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" throw new ClientNotFoundException();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":16}},{"path":"src/test/java/seedu/address/model/client/exceptions/DuplicateClientExceptionTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.model.client.exceptions;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"public class DuplicateClientExceptionTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" public void duplicateClientException_isThrown() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" // Test that DuplicateClientException is thrown","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" assertThrows(DuplicateClientException.class, () -\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public void duplicateClientException_hasCorrectMessage() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" // Test that the message in DuplicateClientException is as expected","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" Exception exception \u003d assertThrows(DuplicateClientException.class, () -\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" throw new DuplicateClientException();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" });","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" assertEquals(\"Operation would result in duplicate persons\", exception.getMessage());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":26}},{"path":"src/test/java/seedu/address/model/property/PostalCodeTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"public class PostalCodeTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e new PostalCode(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" String invalidCode \u003d \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new PostalCode(invalidCode));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public void isValidPostalCode() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" // null name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e PostalCode.isValidPostalCode(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" // invalid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"\")); // empty string","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\" \")); // spaces only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"-00000\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"00\u0026000\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"00.000\")); // contains decimal characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"00000\")); // contains less than 6 character","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"0000000\")); // contains more than 6 character","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(PostalCode.isValidPostalCode(\"-000001\")); // negative number","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" // valid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(PostalCode.isValidPostalCode(\"000000\")); // alphabets only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(PostalCode.isValidPostalCode(\"123456\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(PostalCode.isValidPostalCode(\"999999\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" PostalCode postalCode \u003d new PostalCode(VALID_POSTALCODE_BEDOK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(postalCode.equals(new PostalCode(VALID_POSTALCODE_BEDOK)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(postalCode.equals(postalCode));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(postalCode.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(postalCode.equals(5.0f));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(postalCode.equals(new PostalCode(VALID_POSTALCODE_ADMIRALTY)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":64}},{"path":"src/test/java/seedu/address/model/property/PropertyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public void isSameProperty() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(ADMIRALTY.isSameProperty(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" // same name, all other attributes different -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" Property editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" .withUnit(VALID_UNIT_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" // different postal code -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" // different unit -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withUnit(VALID_UNIT_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.isSameProperty(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" Property admiraltyCopy \u003d new PropertyBuilder(ADMIRALTY).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(ADMIRALTY.equals(admiraltyCopy));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(ADMIRALTY.equals(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" // different type -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(5));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(BEDOK));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" // different postal code -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" Property editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" // different unit -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withUnit(VALID_UNIT_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(ADMIRALTY.equals(editedAdmiralty));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":" String expected \u003d Property.class.getCanonicalName() + \"{postalCode\u003d\" + ADMIRALTY.getPostalCode()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" + \", unit\u003d\" + ADMIRALTY.getUnit() + \"}\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expected, ADMIRALTY.toString());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":72}},{"path":"src/test/java/seedu/address/model/property/UniquePropertiesListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_ADMIRALTY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_POSTALCODE_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.BEDOK;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.DuplicatePropertyException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.exceptions.PropertyNotFoundException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.PropertyBuilder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":"public class UniquePropertiesListTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" private final UniquePropertiesList uniquePropertyList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" public void contains_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.contains(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" public void contains_propertyNotInList_returnsFalse() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(uniquePropertyList.contains(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" public void contains_propertyInList_returnsTrue() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(uniquePropertyList.contains(ADMIRALTY));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" public void contains_propertyWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" Property editedAlice \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_BEDOK).build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(uniquePropertyList.contains(editedAlice));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" public void add_nullProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.add(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullTargetProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperty(null, ADMIRALTY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullEditedProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperty(ADMIRALTY, null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_targetPropertyNotInList_throwsPersonNotFoundException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(PropertyNotFoundException.class, () -\u003e uniquePropertyList.setProperty(ADMIRALTY, ADMIRALTY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_editedPropertyIsSameProperty_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperty(ADMIRALTY, ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"Virusrwj223"},"content":" public void setPerson_editedPersonHasSameIdentity_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Virusrwj223"},"content":" Property editedAdmiralty \u003d new PropertyBuilder(ADMIRALTY).withPostalCode(VALID_POSTALCODE_ADMIRALTY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Virusrwj223"},"content":" .withUnit(VALID_UNIT_ADMIRALTY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Virusrwj223"},"content":" .build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperty(ADMIRALTY, editedAdmiralty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(editedAdmiralty);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_editedPropertyHasDifferentIdentity_success() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperty(ADMIRALTY, BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_editedPropertyHasNonUniqueIdentity_throwsDuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DuplicatePropertyException.class, () -\u003e uniquePropertyList.setProperty(ADMIRALTY, BEDOK));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" // COMMENTED CODE IS FOR PERSON IMPLEMENTING DELETE FUNCTIONAILITY","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" // @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":" // public void remove_nullProperty_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":" // assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.remove(null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" // }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" // @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":" // public void remove_propertyDoesNotExist_throwsPropertyNotFoundException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":" // assertThrows(PersonNotFoundException.class, () -\u003e uniquePersonList.remove(ALICE));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":" // }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Virusrwj223"},"content":" // @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Virusrwj223"},"content":" // public void remove_existingProperty_removesProperty() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Virusrwj223"},"content":" // uniquePersonList.add(ALICE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"Virusrwj223"},"content":" // uniquePersonList.remove(ALICE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"Virusrwj223"},"content":" // UniquePersonList expectedUniquePersonList \u003d new UniquePersonList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"Virusrwj223"},"content":" // assertEquals(expectedUniquePersonList, uniquePersonList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"Virusrwj223"},"content":" // }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullUniquePropertyList_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperties((UniquePropertiesList) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_uniquePropertyList_replacesOwnListWithProvidedUniquePropertyList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperties(expectedUniquePropertiesList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e uniquePropertyList.setProperties((List\u003cProperty\u003e) null));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"Virusrwj223"},"content":" List\u003cProperty\u003e propertyList \u003d Collections.singletonList(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.setProperties(propertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"Virusrwj223"},"content":" UniquePropertiesList expectedUniquePropertiesList \u003d new UniquePropertiesList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"Virusrwj223"},"content":" expectedUniquePropertiesList.add(BEDOK);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(expectedUniquePropertiesList, uniquePropertyList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"Virusrwj223"},"content":" public void setProperty_listWithDuplicateProperty_throwsDuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"Virusrwj223"},"content":" List\u003cProperty\u003e listWithDuplicateProperties \u003d Arrays.asList(ADMIRALTY, ADMIRALTY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DuplicatePropertyException.class, () -\u003e uniquePropertyList","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"Virusrwj223"},"content":" .setProperties(listWithDuplicateProperties));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"Virusrwj223"},"content":" public void add_duplicateProperty_throwsDuplicatePropertyException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"Virusrwj223"},"content":" uniquePropertyList.add(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DuplicatePropertyException.class, () -\u003e uniquePropertyList.add(ADMIRALTY));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"Virusrwj223"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"Virusrwj223"},"content":" -\u003e uniquePropertyList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":176}},{"path":"src/test/java/seedu/address/model/property/UnitTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.model.property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_UNIT_BEDOK;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"public class UnitTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e new Unit(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" String invalidCode \u003d \"\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Unit(invalidCode));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public void isValidUnit() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" // null name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e Unit.isValidUnit(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" // invalid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"\")); // empty string","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\" \")); // spaces only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"-00-00\")); // contains non-alphanumeric characters","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"00 00\")); // wrong delimiter","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"00\u002600\")); // wrong character","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"0-00\")); // few digits in level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"00-0\")); // few digits in unit","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"0-0\")); // few digits in unit and level","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"149-1111\")); // Too tall structure","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"148-111111\")); // Too many units, limited to 6","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(Unit.isValidUnit(\"149-11111119\")); // Too tall structure and too many units","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" // valid name","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(Unit.isValidUnit(\"00-00\")); // alphabets only","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(Unit.isValidUnit(\"01-01\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(Unit.isValidUnit(\"148-11111\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" public void equals() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" Unit unit \u003d new Unit(VALID_UNIT_BEDOK);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(unit.equals(new Unit(VALID_UNIT_BEDOK)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" assertTrue(unit.equals(unit));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(unit.equals(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(unit.equals(5.0f));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(unit.equals(new Unit(VALID_UNIT_ADMIRALTY)));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":67}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedClientTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.storage.JsonAdaptedClient.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.ALICE;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class JsonAdaptedClientTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private static final String INVALID_TYPE \u003d \"invalidType\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_NAME \u003d ALICE.getName().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_PHONE \u003d ALICE.getPhone().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_EMAIL \u003d ALICE.getEmail().toString();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" private static final String VALID_TYPE \u003d ALICE instanceof Buyer ? \"BUYER\" : \"SELLER\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_validClientDetails_returnsClient() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(ALICE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" assertEquals(ALICE, client.toModelType());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(null, VALID_PHONE, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, null, VALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, VALID_PHONE, null, VALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, expectedMessage, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidType_throwsIllegalValueException() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"yongkheehou"},"content":" JsonAdaptedClient client \u003d new JsonAdaptedClient(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_TYPE);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, client::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":80}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPropertyTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.ADMIRALTY;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"public class JsonAdaptedPropertyTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" private static final String INVALID_POSTALCODE \u003d \"12345\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" private static final String INVALID_UNIT \u003d \"00 00\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" private static final String VALID_POSTALCODE \u003d ADMIRALTY.getPostalCode().toString();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" private static final String VALID_UNIT \u003d ADMIRALTY.getUnit().toString();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_validPropertyDetails_returnsProperty() throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(ADMIRALTY);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(ADMIRALTY, property.toModelType());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_invalidPostalCode_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(INVALID_POSTALCODE, VALID_UNIT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d PostalCode.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, expectedMessage, property::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_invalidUnit_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(VALID_POSTALCODE, INVALID_UNIT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d Unit.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, expectedMessage, property::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(null, VALID_UNIT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, PostalCode.class.getSimpleName());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, expectedMessage, property::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_nullUnit_throwsIllegalValueException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" JsonAdaptedProperty property \u003d new JsonAdaptedProperty(VALID_POSTALCODE, null);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Unit.class.getSimpleName());","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, expectedMessage, property::toModelType);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":54}},{"path":"src/test/java/seedu/address/storage/JsonPropertyBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import java.io.IOException;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"public class JsonPropertyBookStorageTest {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonPropertyBookStorageTest\");","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" @TempDir","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" public Path testFolder;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" public void readPropertyBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e readPropertyBook(null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" private java.util.Optional\u003cReadOnlyPropertyBook\u003e readPropertyBook(String filePath) throws Exception {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" return new JsonPropertyBookStorage(Paths.get(filePath)).readPropertyBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" : null;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" assertFalse(readPropertyBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(DataLoadingException.class, () -\u003e readPropertyBook(\"notJsonFormatPropertyBook.json\"));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" * Saves {@code propertyBook} at the specified {@code filePath}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" private void savePropertyBook(ReadOnlyPropertyBook addressBook, String filePath) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" try {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" new JsonPropertyBookStorage(Paths.get(filePath))","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":" .savePropertyBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"Virusrwj223"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"Virusrwj223"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Virusrwj223"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(NullPointerException.class, () -\u003e savePropertyBook(new PropertyBook(), null));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":64}},{"path":"src/test/java/seedu/address/storage/JsonSerializableClientBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.testutil.TypicalClients;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"public class JsonSerializableClientBookTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableClientBookTest\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" private static final Path TYPICAL_CLIENTS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalClientClientBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private static final Path INVALID_CLIENT_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidClientClientBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private static final Path DUPLICATE_CLIENT_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateClientClientBook.json\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_typicalClientsFile_success() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_CLIENTS_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" ClientBook clientBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" ClientBook typicalClientsClientBook \u003d TypicalClients.getTypicalClientBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" assertEquals(clientBookFromFile, typicalClientsClientBook);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_invalidClientFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_CLIENT_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" public void toModelType_duplicateClients_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_CLIENT_FILE,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" JsonSerializableClientBook.class).get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" assertThrows(IllegalValueException.class, JsonSerializableClientBook.MESSAGE_DUPLICATE_CLIENT,","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"yongkheehou":46}},{"path":"src/test/java/seedu/address/storage/JsonSerialzablePropertyBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.storage;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Path;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.commons.util.JsonUtil;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.testutil.TypicalProperty;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"public class JsonSerialzablePropertyBookTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\",","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" \"JsonSerializablePropertyBookTest\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" private static final Path TYPICAL_PROPERTIES_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" .resolve(\"typicalPropertyPropertyBook.json\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" private static final Path INVALID_PROPERTY_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" .resolve(\"invalidPropertyPropertyBook.json\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" private static final Path DUPLICATE_PROPERTY_FILE \u003d TEST_DATA_FOLDER","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" .resolve(\"duplicatePropertyPropertyBook.json\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_typicalPropertiesFile_success() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_PROPERTIES_FILE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook.class).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook propertyBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook typicalPersonsAddressBook \u003d TypicalProperty.getTypicalPropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(propertyBookFromFile, typicalPersonsAddressBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_PROPERTY_FILE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook.class).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_PROPERTY_FILE,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" JsonSerializablePropertyBook.class).get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" assertThrows(IllegalValueException.class, JsonSerializablePropertyBook.MESSAGE_DUPLICATE_PROPERTY,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":49}},{"path":"src/test/java/seedu/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.testutil.TypicalClients.getTypicalClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import static seedu.address.testutil.TypicalProperty.getTypicalPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ReadOnlyClientBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.ReadOnlyPropertyBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" JsonClientBookStorage clientBookStorage \u003d new JsonClientBookStorage(getTempFilePath(\"cb\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" JsonPropertyBookStorage propertyBookStorage \u003d","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" new JsonPropertyBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage, propertyBookStorage,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" clientBookStorage);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonUserPrefsStorage} class. More extensive testing of UserPref saving/reading is done in","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonUserPrefsStorageTest}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonAddressBookStorage} class. More extensive testing of AddressBook saving/reading is done in","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonAddressBookStorageTest}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"yongkheehou"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d ClientBook Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"yongkheehou"},"content":" public void clientBookReadSave() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"yongkheehou"},"content":" /*","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"yongkheehou"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonClientBookStorage} class. More extensive testing of ClientBook saving/reading is done in","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"yongkheehou"},"content":" * {@link JsonClientBookStorageTest}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"yongkheehou"},"content":" ClientBook original \u003d getTypicalClientBook();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"yongkheehou"},"content":" storageManager.saveClientBook(original);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"yongkheehou"},"content":" ReadOnlyClientBook retrieved \u003d storageManager.readClientBook().get();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"yongkheehou"},"content":" assertEquals(original, new ClientBook(retrieved));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"yongkheehou"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"yongkheehou"},"content":" public void getClientBookFilePath() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"yongkheehou"},"content":" assertNotNull(storageManager.getClientBookFilePath());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"Virusrwj223"},"content":" // \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d PropertyBook Tests \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"Virusrwj223"},"content":" public void propertyBookReadSave() throws Exception {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"Virusrwj223"},"content":" /*","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"Virusrwj223"},"content":" * This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"Virusrwj223"},"content":" * {@link JsonClientBookStorage} class. More extensive testing of ClientBook saving/reading is done in","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"Virusrwj223"},"content":" * {@link JsonClientBookStorageTest}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook original \u003d getTypicalPropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"Virusrwj223"},"content":" storageManager.savePropertyBook(original);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"Virusrwj223"},"content":" ReadOnlyPropertyBook retrieved \u003d storageManager.readPropertyBook().get();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"Virusrwj223"},"content":" assertEquals(original, new PropertyBook(retrieved));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"Virusrwj223"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"Virusrwj223"},"content":" public void getPropertyBookFilePath() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"Virusrwj223"},"content":" assertNotNull(storageManager.getPropertyBookFilePath());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"yongkheehou":33,"Virusrwj223":27,"-":61}},{"path":"src/test/java/seedu/address/testutil/ClientBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":" * A utility class to help with building Clientbook objects.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":" * {@code ClientBook cb \u003d new ClientBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"public class ClientBookBuilder {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":" private ClientBook clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":" public ClientBookBuilder() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" clientBook \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" public ClientBookBuilder(ClientBook clientBook) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" this.clientBook \u003d clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" * Adds a new {@code Person} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" public ClientBookBuilder withClient(Client client) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" clientBook.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" public ClientBook build() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" return clientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":34}},{"path":"src/test/java/seedu/address/testutil/ClientBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Buyer;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Seller;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":" * A utility class to help with building Client objects.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"public class ClientBuilder {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":" private Name name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" private Phone phone;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" private Email email;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" * Creates a {@code ClientBuilder} with the default details.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" * Initializes the ClientBuilder with the data of {@code ClientToCopy}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder(Client personToCopy) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" * Sets the {@code Name} of the {@code Client} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder withName(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" this.name \u003d new seedu.address.model.client.Name(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":" * Sets the {@code Phone} of the {@code Client} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder withPhone(String phone) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" this.phone \u003d new seedu.address.model.client.Phone(phone);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" * Sets the {@code Email} of the {@code Client} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" public ClientBuilder withEmail(String email) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" this.email \u003d new seedu.address.model.client.Email(email);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" return this;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" public Buyer buildBuyer() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" return new Buyer(name, phone, email);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"yongkheehou"},"content":" public Seller buildSeller() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"yongkheehou"},"content":" return new Seller(name, phone, email);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":73}},{"path":"src/test/java/seedu/address/testutil/PropertyBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.PostalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":" * A utility class to help with building Property objects.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":"public class PropertyBuilder {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" public static final String DEFAULT_POSTALCODE \u003d \"123456\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":" public static final String DEFAULT_UNIT \u003d \"08-20\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" private Unit unit;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":" private PostalCode postalCode;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" unit \u003d new Unit(DEFAULT_UNIT);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" postalCode \u003d new PostalCode(DEFAULT_POSTALCODE);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" SampleDataUtil.getSamplePropertyBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" * Initializes the PropertyBuilder with the data of {@code propertyToCopy}.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder(Property propertyToCopy) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":" unit \u003d propertyToCopy.getUnit();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":" postalCode \u003d propertyToCopy.getPostalCode();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Virusrwj223"},"content":" * Sets the {@code Unit} of the {@code Property} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder withUnit(String unit) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Virusrwj223"},"content":" this.unit \u003d new Unit(unit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Virusrwj223"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Virusrwj223"},"content":" * Sets the {@code PostalCode} of the {@code Property} that we are building.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Virusrwj223"},"content":" public PropertyBuilder withPostalCode(String postalCode) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Virusrwj223"},"content":" this.postalCode \u003d new PostalCode(postalCode);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Virusrwj223"},"content":" return this;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Virusrwj223"},"content":" public Property build() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"Virusrwj223"},"content":" return new Property(postalCode, unit);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":54}},{"path":"src/test/java/seedu/address/testutil/TypicalClients.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"yongkheehou"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"yongkheehou"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"yongkheehou"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"yongkheehou"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"yongkheehou"},"content":"import java.util.List;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.ClientBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"yongkheehou"},"content":"import seedu.address.model.client.Client;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"yongkheehou"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"yongkheehou"},"content":" * A utility class containing a list of {@code Client} objects to be used in tests.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"yongkheehou"},"content":"public class TypicalClients {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"yongkheehou"},"content":" public static final Client ALICE \u003d new ClientBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"alice@example.com\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"yongkheehou"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yongkheehou"},"content":" .buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"yongkheehou"},"content":" public static final Client BENSON \u003d new ClientBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"yongkheehou"},"content":" .buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yongkheehou"},"content":" public static final Client CARL \u003d new ClientBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"heinz@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"yongkheehou"},"content":" public static final Client DANIEL \u003d new ClientBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"cornelia@example.com\").buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"yongkheehou"},"content":" public static final Client ELLE \u003d new ClientBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"werner@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"yongkheehou"},"content":" public static final Client FIONA \u003d new ClientBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"lydia@example.com\").buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"yongkheehou"},"content":" public static final Client GEORGE \u003d new ClientBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"anna@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"yongkheehou"},"content":" // Manually added","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"yongkheehou"},"content":" public static final Client HOON \u003d new ClientBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"stefan@example.com\").buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"yongkheehou"},"content":" public static final Client IDA \u003d new ClientBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"yongkheehou"},"content":" .withEmail(\"hans@example.com\").buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"yongkheehou"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"yongkheehou"},"content":" public static final Client AMY \u003d new ClientBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"yongkheehou"},"content":" .withEmail(VALID_EMAIL_AMY).buildBuyer();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"yongkheehou"},"content":" public static final Client BOB \u003d new ClientBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"yongkheehou"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"yongkheehou"},"content":" .buildSeller();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"yongkheehou"},"content":" private TypicalClients() {} // prevents instantiation","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"yongkheehou"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"yongkheehou"},"content":" * Returns an {@code ClientBook} with all the typical buyer.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"yongkheehou"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"yongkheehou"},"content":" public static ClientBook getTypicalClientBook() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"yongkheehou"},"content":" ClientBook cb \u003d new ClientBook();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"yongkheehou"},"content":" for (Client client : getTypicalClients()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"yongkheehou"},"content":" cb.addClient(client);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"yongkheehou"},"content":" return cb;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"yongkheehou"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"yongkheehou"},"content":" public static List\u003cClient\u003e getTypicalClients() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"yongkheehou"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"yongkheehou"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"yongkheehou"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"yongkheehou":68}},{"path":"src/test/java/seedu/address/testutil/TypicalProperty.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"Virusrwj223"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Virusrwj223"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Virusrwj223"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Virusrwj223"},"content":"import java.util.List;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.PropertyBook;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Virusrwj223"},"content":"import seedu.address.model.property.Property;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Virusrwj223"},"content":"/**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Virusrwj223"},"content":" * A utility class containing a list of {@code Property} objects to be used in tests.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Virusrwj223"},"content":"public class TypicalProperty {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Virusrwj223"},"content":" public static final Property ADMIRALTY \u003d new PropertyBuilder().withUnit(\"02-22\").withPostalCode(\"654321\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Virusrwj223"},"content":" public static final Property BEDOK \u003d new PropertyBuilder().withUnit(\"11-12\").withPostalCode(\"321456\").build();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Virusrwj223"},"content":" /**","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Virusrwj223"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Virusrwj223"},"content":" */","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Virusrwj223"},"content":" public static PropertyBook getTypicalPropertyBook() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Virusrwj223"},"content":" PropertyBook ab \u003d new PropertyBook();","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Virusrwj223"},"content":" for (Property person : getTypicalProperties()) {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Virusrwj223"},"content":" ab.addProperty(person);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Virusrwj223"},"content":" return ab;","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Virusrwj223"},"content":" public static List\u003cProperty\u003e getTypicalProperties() {","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Virusrwj223"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ADMIRALTY, BEDOK));","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Virusrwj223"},"content":" }","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Virusrwj223"},"content":"}","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Virusrwj223"},"content":"","lastModifiedDate":"2024-10-04","isFullCredit":false}],"authorContributionMap":{"Virusrwj223":33}}] diff --git a/AY2425S1-CS2103T-T16-2_tp_master/commits.json b/AY2425S1-CS2103T-T16-2_tp_master/commits.json index 93d3ba7a..23ac6390 100644 --- a/AY2425S1-CS2103T-T16-2_tp_master/commits.json +++ b/AY2425S1-CS2103T-T16-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yongkheehou":[{"date":"2024-09-30","commitResults":[{"hash":"0e52d0348a593a5103e1c40b4b709741a5d0b042","isMergeCommit":false,"messageTitle":"Update AboutUs page with Khee Hou information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":0}}}]},{"date":"2024-10-02","commitResults":[{"hash":"1eb3010b28dafd7f26bcae690d0f5596c49f9d48","isMergeCommit":false,"messageTitle":"Update DG for addbuyer and addseller use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":28}}},{"hash":"fc03bd1e1d4d4ba2aee242aab1890374e8eb8036","isMergeCommit":true,"messageTitle":"Merge pull request #35 from yongkheehou/chore/update-dg-add-clients","messageBody":"Update DG for addbuyer and addseller use case","fileTypesAndContributionMap":{}},{"hash":"499c10eec65ca9c92037d3c689697916915ca94f","isMergeCommit":false,"messageTitle":"Update product page names to ClientGrid","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"bd6a142ec88aa3ba297784ea8108ba16411473f1","isMergeCommit":true,"messageTitle":"Merge pull request #37 from yongkheehou/chore/fix-product-page-names","messageBody":"Update product page names to ClientGrid","fileTypesAndContributionMap":{}},{"hash":"ba7c04d141ed4d13db2419279d9890c1cd7d92e8","isMergeCommit":true,"messageTitle":"Merge pull request #38 from thony-ui/add-precommit-hook","messageBody":"Add pre commit to checkstyle","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"8a06e335cd651d883f05a6d4a3e0ff15503c5e65","isMergeCommit":true,"messageTitle":"Merge pull request #18 from yongkheehou/chore/update-aboutus-kheehou","messageBody":"Update AboutUs Page","fileTypesAndContributionMap":{}},{"hash":"bfcba46eba249d9fce72c86e0bb467537d1a55c8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Anthony/AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ba671239a3de2b947e2fbfcfa8bc0a5337ebcb60","isMergeCommit":true,"messageTitle":"Merge pull request #10 from thony-ui/Anthony/AboutUs","messageBody":"Update about us page","fileTypesAndContributionMap":{}},{"hash":"e4606d0ca8df983a472135d91cbee63d9503f9e1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3e688bb047e2c6f65a55c91a65a9a1236e148831","isMergeCommit":true,"messageTitle":"Merge pull request #29 from jolwnn/update-about-us","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}},{"hash":"69e0e43e1931cb90e4dab8e8d1800697b509e355","isMergeCommit":false,"messageTitle":"Fix UG formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":10}}},{"hash":"28558f9ea0e55cb544dc05e8e65dbdff7ac41e67","isMergeCommit":false,"messageTitle":"Fix DG formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"e49c63c0e50f07e793ee70a2c48821053a7d549e","isMergeCommit":true,"messageTitle":"Merge pull request #45 from yongkheehou/fix-dg-formatting","messageBody":"Fix DG formatting","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"d64aec6a759c9f38290086c884185cfb466ef958","isMergeCommit":true,"messageTitle":"Merge pull request #50 from Virusrwj223/CreateProperty","messageBody":"Define Property Model","fileTypesAndContributionMap":{}},{"hash":"efec37dce1dddf858ff66395dad78232c52fb3ef","isMergeCommit":false,"messageTitle":"Add model and storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":823,"deletions":5},"test-code":{"insertions":72,"deletions":0}}},{"hash":"f07b41d9b8fe8a5eca365ed0cc5155bb20c4f055","isMergeCommit":false,"messageTitle":"Add changes to MainApp","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":396,"deletions":23},"test-code":{"insertions":215,"deletions":33}}}]},{"date":"2024-10-10","commitResults":[{"hash":"a55e0e76f0661da33fe97ce84e649041742e585e","isMergeCommit":false,"messageTitle":"Improve test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":1},"other":{"insertions":13,"deletions":13},"test-code":{"insertions":620,"deletions":10}}},{"hash":"558d9f6486970ade7778dc790c8c424a59cea632","isMergeCommit":false,"messageTitle":"Fix Checkstyle for ClientBuilder.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"3c0f0f99bb580d14d264814cf513762be41f00fa","isMergeCommit":false,"messageTitle":"Update ModelManager and StorageManager tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":74,"deletions":6}}},{"hash":"b80abc1a0a1ad5f30731ff0b49a91383ffc91c52","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into define-buyer-seller-models","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a7f3abac0f8023cea26e9cc0978537b7b6b88c8","isMergeCommit":true,"messageTitle":"Merge pull request #58 from yongkheehou/define-buyer-seller-models","messageBody":"Define Buyer/ Seller Models","fileTypesAndContributionMap":{}},{"hash":"292f8a9d3f41733bb0b060f463c5f26b92525e91","isMergeCommit":false,"messageTitle":"Fix v1.2 test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}}]},{"date":"2024-10-12","commitResults":[{"hash":"d5b3b73fa37f67a50241c460f2ce21c0887cc29d","isMergeCommit":false,"messageTitle":"Make Client an abstract class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":115,"deletions":56},"test-code":{"insertions":2,"deletions":2}}},{"hash":"e51916789751d009f4d1512e7766dc2ac6a171b4","isMergeCommit":false,"messageTitle":"Add unit tests","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":0},"test-code":{"insertions":308,"deletions":0}}},{"hash":"4119a4f87152b74f28b0dd2de74c7fbeb3a347be","isMergeCommit":true,"messageTitle":"Merge pull request #70 from yongkheehou/fix-make-client-abstract-class","messageBody":"Make Client an abstract class","fileTypesAndContributionMap":{}},{"hash":"a169bc4f08c10047db239e337b9f5e170579e346","isMergeCommit":false,"messageTitle":"Add logic classes for addbuyer and addseller cmds","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":417,"deletions":5},"test-code":{"insertions":582,"deletions":18}}},{"hash":"dfa410a01f38efc4a4ba1a5e025a8f35d0a8e044","isMergeCommit":true,"messageTitle":"Merge pull request #73 from yongkheehou/add-logic-classes-for-addbuyer-seller-commands","messageBody":"Add logic classes for addbuyer and addseller cmds","fileTypesAndContributionMap":{}}]}],"jolwnn":[{"date":"2024-10-02","commitResults":[{"hash":"8e32b16db2747babd32fef18a7fe2f820303c930","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":0}}}]},{"date":"2024-10-03","commitResults":[{"hash":"edf80036815c47c6ce43498eddd880f6f6a242a2","isMergeCommit":true,"messageTitle":"Merge pull request #27 from jolwnn/add-zhuolin-photo","messageBody":"Add Zhuo Lin\u0027s Photo","fileTypesAndContributionMap":{}},{"hash":"3ada6bd82bbfd4edab0e764179da7b8fb4c3a7ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-T16-2:master\u0027 into update-about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"335104a6889daa839bf49a93075d3939f6a8de99","isMergeCommit":false,"messageTitle":"Update developer guide with delete property use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":8}}},{"hash":"9d0c4f2212b34db370eeff3fe3117738434db9d8","isMergeCommit":false,"messageTitle":"Update with minor changes to use case 1, 2, 4","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":14}}}]},{"date":"2024-10-10","commitResults":[{"hash":"b05d6ee1ffc5a7f342a2a5dc534abea0516561c0","isMergeCommit":false,"messageTitle":"Add command and parser classes for delete property","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":156,"deletions":1}}},{"hash":"7618561f6d5e98f77c455cc7b82ec77d3922c3e3","isMergeCommit":false,"messageTitle":"Add tests for command and parser classes for delete property","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":133,"deletions":0}}},{"hash":"85ef40c8179e3e8750f178903399209679a6a076","isMergeCommit":false,"messageTitle":"Fix failing tests for command and parser classes for delete property","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":27}}},{"hash":"38d350ca1e3aee9f2563c30473c5e50c962b206e","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"4dab0353f166add8365abc47895db7fc8f017e83","isMergeCommit":true,"messageTitle":"Merge pull request #66 from jolwnn/delete-property-setup","messageBody":"Initial Set Up for Delete Properties Command","fileTypesAndContributionMap":{}}]}],"Virusrwj223":[{"date":"2024-09-30","commitResults":[{"hash":"15c5054da033ec4b30c591bca1582257e31cffe9","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}},{"hash":"fb880b1a2a9bd07e0e7f6093be18eb54deabd563","isMergeCommit":true,"messageTitle":"Merge branch \u0027photograph\u0027 into AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9e266eba435f662e0be96b179d8a19e3eba2dc16","isMergeCommit":false,"messageTitle":"Rename photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ba8e0a9374b1e68d9fec4dc3f5ca1c68bcda7e28","isMergeCommit":false,"messageTitle":"Add responsibility","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-01","commitResults":[{"hash":"fcb30f80a1a30ceaed9ae33161e459c79afde775","isMergeCommit":false,"messageTitle":"Update ReadMe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":9}}},{"hash":"6f465aedb64f1c1fc60dcb293d852147ac99cc00","isMergeCommit":true,"messageTitle":"Merge pull request #21 from Virusrwj223/ProjectReadMe","messageBody":"Update read me","fileTypesAndContributionMap":{}},{"hash":"65d5defc91b8f34d1e8b89c00ffd5ef38209399c","isMergeCommit":true,"messageTitle":"Merge pull request #3 from AY2425S1-CS2103T-T16-2/master","messageBody":"sync","fileTypesAndContributionMap":{}},{"hash":"249a39fa70e561294d6f12523d634b8ec4281efc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"152ae5d38f0ce0cb675301753871c368d62b34ac","isMergeCommit":false,"messageTitle":"Update Develop Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":24}}}]},{"date":"2024-10-03","commitResults":[{"hash":"d4bd635251a099986b322f57bc936741c1cc15c6","isMergeCommit":true,"messageTitle":"Merge pull request #4 from AY2425S1-CS2103T-T16-2/master","messageBody":"sync","fileTypesAndContributionMap":{}},{"hash":"aa273dd815e038b21c668a2e3d9de96622f36ce7","isMergeCommit":true,"messageTitle":"Resolve merge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a973bf40dce6f32ed4f123622f606872dafc9982","isMergeCommit":false,"messageTitle":"Add property","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"8d5689958b6306914e03099b26b2c4c99fe97474","isMergeCommit":false,"messageTitle":"Shift add property","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":29}}},{"hash":"069b6afea39c2d6a5093f9ab16e7fa782c76655a","isMergeCommit":true,"messageTitle":"Merge pull request #5 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"b967ec0b965e048925fa9cf23e8f4d07c8d248f9","isMergeCommit":true,"messageTitle":"Merge pull request #14 from Virusrwj223/AboutUs","messageBody":"Update about us page","fileTypesAndContributionMap":{}},{"hash":"2ab42a6e26c8b09858096f0747acf2df2e6f4bc0","isMergeCommit":true,"messageTitle":"Merge pull request #6 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"2d6f1d226fe2cd0a8a6cf12dbfd2a7b2767aa6e8","isMergeCommit":true,"messageTitle":"Merge pull request #7 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"8d57045838cd65c4a253b1c96f8cf77105003739","isMergeCommit":false,"messageTitle":"Define property","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":245,"deletions":0}}},{"hash":"729e94bf6e2cbd0c0093a627bca61909b83051dc","isMergeCommit":false,"messageTitle":"Add javaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":10}}},{"hash":"e6639b8a5e85c9387f1cf421a926ad8673b83fdc","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":9}}}]},{"date":"2024-10-04","commitResults":[{"hash":"f70b96d15bf844a03ada998de3d15f069e3cbcf3","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":328,"deletions":0}}},{"hash":"c031141cd38a82f106128fc6721ca200c65908fe","isMergeCommit":false,"messageTitle":"Complete model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":163,"deletions":26},"test-code":{"insertions":102,"deletions":22}}}]},{"date":"2024-10-10","commitResults":[{"hash":"737803887c5d511974cbf2bf1ea854f2a96960d9","isMergeCommit":true,"messageTitle":"Merge pull request #8 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"b36057e8831c8220c1431396d909be09891a8bde","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into CreateProperty","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b54b703152bf4ef017050c0d3291128ff6c8597c","isMergeCommit":false,"messageTitle":"Update JavaDoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"3ed3c99c810f84810f5f7eb10d5a907f5722f875","isMergeCommit":false,"messageTitle":"Update JavaDoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"590ef347aeeaa24eade4294bedc53f35c33f9699","isMergeCommit":true,"messageTitle":"Merge pull request #64 from Virusrwj223/CreateProperty","messageBody":"Update JavaDoc","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"3ecd2ef473099b08ce2fba21c975b22440ad8dd1","isMergeCommit":true,"messageTitle":"Merge pull request #9 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"f5ae6bcc5fe3ebda5752459defcb2763110cf9f5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Model","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"402a6b5a9c96df32769ec99fdbfa3e64e5f6437d","isMergeCommit":false,"messageTitle":"Update merge","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":134,"deletions":28},"test-code":{"insertions":162,"deletions":30}}},{"hash":"e8a9880a551ff58490968a34f7cb5d2010f37014","isMergeCommit":true,"messageTitle":"Merge pull request #10 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"881c83c1db0055d73f15a272d8520ded28b3cec9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Model","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"98783862ad67b577550ef762ef31a36648f35c1a","isMergeCommit":false,"messageTitle":"Update test signature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7},"test-code":{"insertions":2,"deletions":4}}},{"hash":"dae6252e053041809a8dae6076cbed1b4e481855","isMergeCommit":true,"messageTitle":"Merge pull request #77 from Virusrwj223/Model","messageBody":"Model","fileTypesAndContributionMap":{}}]}],"apollo-tan":[{"date":"2024-10-02","commitResults":[{"hash":"f7909a9d6fc982df53b5b8e042cbd8eea4c7ed51","isMergeCommit":true,"messageTitle":"Merge pull request #36 from apollo-tan/add-shiXin-photo","messageBody":"Add Shi Xin\u0027s Photo","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"a5ca3d64d9a9c545deac4fcb096351639b80ba74","isMergeCommit":false,"messageTitle":"Update DG with information pertaining to the list feature","messageBody":"Update the DG: user stories, glossary, NFRs, use cases that is related to the List Feature.\n","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":9}}},{"hash":"686fb829922c1c3eb06c29eac5a340d7c82bd80f","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":1}}},{"hash":"7e7d097a612c6c716bfc61e81b54b05e49d64b8b","isMergeCommit":false,"messageTitle":"Resolve extra apostrophe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":7}}},{"hash":"549b5c9aa8daa8ad1e9409be2026315fb4ac1cd0","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"3d8acba099b5bebe5cf31839c4730ed87377d6bd","isMergeCommit":false,"messageTitle":"Fix AboutUs style issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"794570713c31507fc9560fc0f61d9c3c9392c8db","isMergeCommit":false,"messageTitle":"Add rudimentary support for list command","messageBody":"Add ListCommandParser to parse arguments and create the correct ListCommand associated with the correct key\nUpdate ListCommand to store the key and act accordingly\nUpdate AddressBookParser to parse the new version of the ListCommand appropriately\nUpdate CliSyntax to account for new command prefix KEY\n","fileTypesAndContributionMap":{"functional-code":{"insertions":113,"deletions":4}}},{"hash":"caaf1b4eac9a466180444eb0a00674124d7b17ca","isMergeCommit":false,"messageTitle":"Fix style issues and added some JavaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":36},"test-code":{"insertions":49,"deletions":29}}},{"hash":"a025a6e9f971a934a90ca9c5161f19030a675dbe","isMergeCommit":false,"messageTitle":"Fix code coverage issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":64,"deletions":11}}},{"hash":"52653c5e3354af69ab2d243458be9f97ec29b2e9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-setup-list-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e9e58c0a8cf06499a28a580e3ec9aee8a46a0485","isMergeCommit":true,"messageTitle":"Merge pull request #65 from apollo-tan/branch-setup-list-command","messageBody":"Add rudimentary support for list command","fileTypesAndContributionMap":{}}]}],"thony-ui":[{"date":"2024-09-29","commitResults":[{"hash":"2f14b83cd9b143686919252a8aadb61ed61e8e89","isMergeCommit":false,"messageTitle":"Update about us page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":7}}}]},{"date":"2024-10-01","commitResults":[{"hash":"6cc509d2565db5135f9d4371a14bec3c7d804a1a","isMergeCommit":false,"messageTitle":"Update site wide settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}},{"hash":"47ca1c34e72440ff028bc41ac0de223f0d13bc3c","isMergeCommit":true,"messageTitle":"Merge pull request #23 from thony-ui/update-site-settings","messageBody":"Update site wide settings","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"88e291560a669abbcf8e3e5ad6cda56067692929","isMergeCommit":false,"messageTitle":"Developer guide for delete clients","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":14}}},{"hash":"c0a193abdd6257565dd108443a796b5ebb9b6bd4","isMergeCommit":true,"messageTitle":"Fix merge conflict for developer guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9d12d9d32c95b7424cc8c88a70df4eeec74bc5b8","isMergeCommit":true,"messageTitle":"Merge pull request #34 from thony-ui/delete-client-developer-guide","messageBody":"Developer guide for delete clients","fileTypesAndContributionMap":{}},{"hash":"dfd4b00cadb1fd81ddc373b8d2a36c21fedc606c","isMergeCommit":false,"messageTitle":"Add pore commit to checkstyle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":9,"deletions":0}}},{"hash":"03a369cacff869124e50c9fc9744ae8d997fa9c0","isMergeCommit":false,"messageTitle":"Fix CI","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-03","commitResults":[{"hash":"cd873661a0965d078104dc9f1986cb75e1318a5c","isMergeCommit":true,"messageTitle":"Merge pull request #44 from jolwnn/dg-delete-property","messageBody":"Update Developer Guide Delete Property","fileTypesAndContributionMap":{}},{"hash":"bc92d3fc9f62803213141a2b8be1c931a39672ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4b0bb135f2244d28786eb188457f2980c2e8e75e","isMergeCommit":true,"messageTitle":"Merge pull request #43 from Virusrwj223/DeveloperGuide","messageBody":"Update Developer guide create property","fileTypesAndContributionMap":{}},{"hash":"b9b45803060e45e2934428de0aaaa4c9e548c48a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-developer-guide-list","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"154e32951f98f787890e643631d6a69e52151b71","isMergeCommit":true,"messageTitle":"Merge pull request #42 from apollo-tan/update-developer-guide-list","messageBody":"Update DG with information pertaining to the list feature","fileTypesAndContributionMap":{}},{"hash":"a8e2481eb4d65df064bdd5d3ba07bffec14dd424","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus-shixin","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"81297726ac532bd76450e19b04195d0b3884c96b","isMergeCommit":true,"messageTitle":"Merge pull request #39 from apollo-tan/update-aboutus-shixin","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"63e7357ca674a0770e2339bec370029dcc9467ef","isMergeCommit":false,"messageTitle":"First step to ensure delete client works","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":0},"test-code":{"insertions":47,"deletions":0}}},{"hash":"e885ae7616fe91af6e24afe2ccc6fb870c06b8ef","isMergeCommit":false,"messageTitle":"Make parser for delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":167,"deletions":24},"test-code":{"insertions":58,"deletions":6}}},{"hash":"31d25d6f9884a83b972213c2f60077a4d0533099","isMergeCommit":false,"messageTitle":"Added test cases for DeleteSeller and DeleteBuyer command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":14},"test-code":{"insertions":74,"deletions":0}}},{"hash":"63e1416bd52b465e41deb5c3445743a5864643d5","isMergeCommit":false,"messageTitle":"Delete client command done","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":2},"test-code":{"insertions":23,"deletions":11}}}]},{"date":"2024-10-10","commitResults":[{"hash":"e3dba282175df868d2bc4224882bc5bb62c6ef2f","isMergeCommit":true,"messageTitle":"Merge pull request #52 from thony-ui/delete-client-branch","messageBody":"First step to ensure delete client works","fileTypesAndContributionMap":{}},{"hash":"fdd63bec747a72f7ee4b6428c949fdb3fbfab63e","isMergeCommit":true,"messageTitle":"Merge pull request #59 from yongkheehou/fix-v1.2-test-cases","messageBody":"Fix v1.2 test cases","fileTypesAndContributionMap":{}},{"hash":"8885986a9cdccbd39dae728e122d74680b943b45","isMergeCommit":true,"messageTitle":"Merge pull request #63 from Virusrwj223/CreateProperty","messageBody":"Create property Update JavaDoc","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"d4ff219408ad20e2c2f444801a4e9b85da5a0916","isMergeCommit":false,"messageTitle":"Fix errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":32},"test-code":{"insertions":11,"deletions":6}}},{"hash":"f589cb47a4d849fc11ee1cad6f336984ec5df80e","isMergeCommit":true,"messageTitle":"Merge pull request #68 from thony-ui/complete-delete-command","messageBody":"Fix errors","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"35c8cb8d4a02c31da4be25122bf2fcc4407231f2","isMergeCommit":false,"messageTitle":"Complete delete command logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":2},"test-code":{"insertions":4,"deletions":5}}},{"hash":"8922a436464653d31b05b6ecea46cea15133d2cb","isMergeCommit":false,"messageTitle":"Delete buyer and seller command completed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"498977696d9273f9e113371dcd8da8baf264ade1","isMergeCommit":false,"messageTitle":"Refractor to phone","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":8},"test-code":{"insertions":19,"deletions":14}}},{"hash":"9c4a11b9fa5949c74449ccdc4d99b22c9f420807","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into delete-command-logic","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"40248ab7cb9fd2ae991c961d8868ae7dea740b05","isMergeCommit":true,"messageTitle":"Merge pull request #72 from thony-ui/delete-command-logic","messageBody":"Delete command logic","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yongkheehou":{"docs":54,"functional-code":1684,"test-code":1821,"other":2},"jolwnn":{"docs":17,"functional-code":156,"test-code":105},"Virusrwj223":{"docs":27,"functional-code":560,"test-code":568},"apollo-tan":{"docs":14,"functional-code":126,"test-code":86},"thony-ui":{"docs":47,"functional-code":253,"test-code":192,"other":9}},"authorContributionVariance":{"yongkheehou":201693.0,"jolwnn":4304.559,"Virusrwj223":26889.521,"apollo-tan":5292.3745,"thony-ui":12085.541},"authorDisplayNameMap":{"yongkheehou":"CS2103T-T16-2 YONG.. HOU","jolwnn":"CS2103T-T16-2 WEE .. LIN","Virusrwj223":"CS2103T-T16-2 HRIS..NDAL","apollo-tan":"CS2103T-T16-2 TAN .. XIN","thony-ui":"CS2103T-T16-2 ANTH..ANTO"}} +{"authorDailyContributionsMap":{"yongkheehou":[{"date":"2024-09-30","commitResults":[{"hash":"0e52d0348a593a5103e1c40b4b709741a5d0b042","isMergeCommit":false,"messageTitle":"Update AboutUs page with Khee Hou information","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":0}}}]},{"date":"2024-10-02","commitResults":[{"hash":"1eb3010b28dafd7f26bcae690d0f5596c49f9d48","isMergeCommit":false,"messageTitle":"Update DG for addbuyer and addseller use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":23,"deletions":28}}},{"hash":"fc03bd1e1d4d4ba2aee242aab1890374e8eb8036","isMergeCommit":true,"messageTitle":"Merge pull request #35 from yongkheehou/chore/update-dg-add-clients","messageBody":"Update DG for addbuyer and addseller use case","fileTypesAndContributionMap":{}},{"hash":"499c10eec65ca9c92037d3c689697916915ca94f","isMergeCommit":false,"messageTitle":"Update product page names to ClientGrid","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"bd6a142ec88aa3ba297784ea8108ba16411473f1","isMergeCommit":true,"messageTitle":"Merge pull request #37 from yongkheehou/chore/fix-product-page-names","messageBody":"Update product page names to ClientGrid","fileTypesAndContributionMap":{}},{"hash":"ba7c04d141ed4d13db2419279d9890c1cd7d92e8","isMergeCommit":true,"messageTitle":"Merge pull request #38 from thony-ui/add-precommit-hook","messageBody":"Add pre commit to checkstyle","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"8a06e335cd651d883f05a6d4a3e0ff15503c5e65","isMergeCommit":true,"messageTitle":"Merge pull request #18 from yongkheehou/chore/update-aboutus-kheehou","messageBody":"Update AboutUs Page","fileTypesAndContributionMap":{}},{"hash":"bfcba46eba249d9fce72c86e0bb467537d1a55c8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Anthony/AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ba671239a3de2b947e2fbfcfa8bc0a5337ebcb60","isMergeCommit":true,"messageTitle":"Merge pull request #10 from thony-ui/Anthony/AboutUs","messageBody":"Update about us page","fileTypesAndContributionMap":{}},{"hash":"e4606d0ca8df983a472135d91cbee63d9503f9e1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"3e688bb047e2c6f65a55c91a65a9a1236e148831","isMergeCommit":true,"messageTitle":"Merge pull request #29 from jolwnn/update-about-us","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}},{"hash":"69e0e43e1931cb90e4dab8e8d1800697b509e355","isMergeCommit":false,"messageTitle":"Fix UG formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":14,"deletions":10}}},{"hash":"28558f9ea0e55cb544dc05e8e65dbdff7ac41e67","isMergeCommit":false,"messageTitle":"Fix DG formatting","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"e49c63c0e50f07e793ee70a2c48821053a7d549e","isMergeCommit":true,"messageTitle":"Merge pull request #45 from yongkheehou/fix-dg-formatting","messageBody":"Fix DG formatting","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"d64aec6a759c9f38290086c884185cfb466ef958","isMergeCommit":true,"messageTitle":"Merge pull request #50 from Virusrwj223/CreateProperty","messageBody":"Define Property Model","fileTypesAndContributionMap":{}},{"hash":"efec37dce1dddf858ff66395dad78232c52fb3ef","isMergeCommit":false,"messageTitle":"Add model and storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":823,"deletions":5},"test-code":{"insertions":72,"deletions":0}}},{"hash":"f07b41d9b8fe8a5eca365ed0cc5155bb20c4f055","isMergeCommit":false,"messageTitle":"Add changes to MainApp","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":396,"deletions":23},"test-code":{"insertions":215,"deletions":33}}}]},{"date":"2024-10-10","commitResults":[{"hash":"a55e0e76f0661da33fe97ce84e649041742e585e","isMergeCommit":false,"messageTitle":"Improve test coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":1},"other":{"insertions":13,"deletions":13},"test-code":{"insertions":620,"deletions":10}}},{"hash":"558d9f6486970ade7778dc790c8c424a59cea632","isMergeCommit":false,"messageTitle":"Fix Checkstyle for ClientBuilder.java","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"3c0f0f99bb580d14d264814cf513762be41f00fa","isMergeCommit":false,"messageTitle":"Update ModelManager and StorageManager tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":74,"deletions":6}}},{"hash":"b80abc1a0a1ad5f30731ff0b49a91383ffc91c52","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into define-buyer-seller-models","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8a7f3abac0f8023cea26e9cc0978537b7b6b88c8","isMergeCommit":true,"messageTitle":"Merge pull request #58 from yongkheehou/define-buyer-seller-models","messageBody":"Define Buyer/ Seller Models","fileTypesAndContributionMap":{}},{"hash":"292f8a9d3f41733bb0b060f463c5f26b92525e91","isMergeCommit":false,"messageTitle":"Fix v1.2 test cases","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":2}}}]},{"date":"2024-10-12","commitResults":[{"hash":"d5b3b73fa37f67a50241c460f2ce21c0887cc29d","isMergeCommit":false,"messageTitle":"Make Client an abstract class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":115,"deletions":56},"test-code":{"insertions":2,"deletions":2}}},{"hash":"e51916789751d009f4d1512e7766dc2ac6a171b4","isMergeCommit":false,"messageTitle":"Add unit tests","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":0},"test-code":{"insertions":308,"deletions":0}}},{"hash":"4119a4f87152b74f28b0dd2de74c7fbeb3a347be","isMergeCommit":true,"messageTitle":"Merge pull request #70 from yongkheehou/fix-make-client-abstract-class","messageBody":"Make Client an abstract class","fileTypesAndContributionMap":{}},{"hash":"a169bc4f08c10047db239e337b9f5e170579e346","isMergeCommit":false,"messageTitle":"Add logic classes for addbuyer and addseller cmds","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":417,"deletions":5},"test-code":{"insertions":582,"deletions":18}}},{"hash":"dfa410a01f38efc4a4ba1a5e025a8f35d0a8e044","isMergeCommit":true,"messageTitle":"Merge pull request #73 from yongkheehou/add-logic-classes-for-addbuyer-seller-commands","messageBody":"Add logic classes for addbuyer and addseller cmds","fileTypesAndContributionMap":{}},{"hash":"1c5effac008f777302c7b67892b8380ed5e07b33","isMergeCommit":false,"messageTitle":"Add UI classes for addbuyer/ addseller","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":156,"deletions":5},"other":{"insertions":19,"deletions":1},"test-code":{"insertions":179,"deletions":0}}},{"hash":"a7ae718a10758fd85ca599ec0e3f259e4eb69f7d","isMergeCommit":false,"messageTitle":"Add newline","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"bfd7f8f67988b1d538af631379e4f23baaebd6b7","isMergeCommit":false,"messageTitle":"Fix junit syntax","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":7,"deletions":6}}},{"hash":"4dfe9e0c2d7ff59b8960006558fd54d96c4583c2","isMergeCommit":false,"messageTitle":"Remove GUI testing","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":2,"deletions":21},"test-code":{"insertions":0,"deletions":179}}},{"hash":"ab68dd3ca74c0ad993683161c5bbd37de61e664a","isMergeCommit":false,"messageTitle":"Wrap client book with constructor in edit cmd test","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":4}}},{"hash":"f190b2a61cd71efd8a52832a5e302989f7584a45","isMergeCommit":true,"messageTitle":"Merge pull request #79 from yongkheehou/small-fix-to-tests","messageBody":"Wrap client book with constructor in edit cmd test","fileTypesAndContributionMap":{}},{"hash":"66015818877c983f0159d440e1bf1c0e9b11b998","isMergeCommit":false,"messageTitle":"Small Fix to SampleDataUtil","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2}}},{"hash":"14f31c38302e18d6eaa2a5f54e5d520245102c70","isMergeCommit":true,"messageTitle":"Merge pull request #78 from yongkheehou/add-ui-classes-for-addbuyer-seller-commands-2","messageBody":"Add UI classes for addbuyer/ addseller [2]","fileTypesAndContributionMap":{}}]}],"jolwnn":[{"date":"2024-10-02","commitResults":[{"hash":"8e32b16db2747babd32fef18a7fe2f820303c930","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":0}}}]},{"date":"2024-10-03","commitResults":[{"hash":"edf80036815c47c6ce43498eddd880f6f6a242a2","isMergeCommit":true,"messageTitle":"Merge pull request #27 from jolwnn/add-zhuolin-photo","messageBody":"Add Zhuo Lin\u0027s Photo","fileTypesAndContributionMap":{}},{"hash":"3ada6bd82bbfd4edab0e764179da7b8fb4c3a7ba","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-T16-2:master\u0027 into update-about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"335104a6889daa839bf49a93075d3939f6a8de99","isMergeCommit":false,"messageTitle":"Update developer guide with delete property use case","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":8}}},{"hash":"9d0c4f2212b34db370eeff3fe3117738434db9d8","isMergeCommit":false,"messageTitle":"Update with minor changes to use case 1, 2, 4","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":14}}}]},{"date":"2024-10-10","commitResults":[{"hash":"b05d6ee1ffc5a7f342a2a5dc534abea0516561c0","isMergeCommit":false,"messageTitle":"Add command and parser classes for delete property","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":156,"deletions":1}}},{"hash":"7618561f6d5e98f77c455cc7b82ec77d3922c3e3","isMergeCommit":false,"messageTitle":"Add tests for command and parser classes for delete property","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":133,"deletions":0}}},{"hash":"85ef40c8179e3e8750f178903399209679a6a076","isMergeCommit":false,"messageTitle":"Fix failing tests for command and parser classes for delete property","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":27}}},{"hash":"38d350ca1e3aee9f2563c30473c5e50c962b206e","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"4dab0353f166add8365abc47895db7fc8f017e83","isMergeCommit":true,"messageTitle":"Merge pull request #66 from jolwnn/delete-property-setup","messageBody":"Initial Set Up for Delete Properties Command","fileTypesAndContributionMap":{}}]}],"Virusrwj223":[{"date":"2024-09-30","commitResults":[{"hash":"15c5054da033ec4b30c591bca1582257e31cffe9","isMergeCommit":false,"messageTitle":"Update AboutUs page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}},{"hash":"fb880b1a2a9bd07e0e7f6093be18eb54deabd563","isMergeCommit":true,"messageTitle":"Merge branch \u0027photograph\u0027 into AboutUs","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9e266eba435f662e0be96b179d8a19e3eba2dc16","isMergeCommit":false,"messageTitle":"Rename photo","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ba8e0a9374b1e68d9fec4dc3f5ca1c68bcda7e28","isMergeCommit":false,"messageTitle":"Add responsibility","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-01","commitResults":[{"hash":"fcb30f80a1a30ceaed9ae33161e459c79afde775","isMergeCommit":false,"messageTitle":"Update ReadMe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":9}}},{"hash":"6f465aedb64f1c1fc60dcb293d852147ac99cc00","isMergeCommit":true,"messageTitle":"Merge pull request #21 from Virusrwj223/ProjectReadMe","messageBody":"Update read me","fileTypesAndContributionMap":{}},{"hash":"65d5defc91b8f34d1e8b89c00ffd5ef38209399c","isMergeCommit":true,"messageTitle":"Merge pull request #3 from AY2425S1-CS2103T-T16-2/master","messageBody":"sync","fileTypesAndContributionMap":{}},{"hash":"249a39fa70e561294d6f12523d634b8ec4281efc","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"152ae5d38f0ce0cb675301753871c368d62b34ac","isMergeCommit":false,"messageTitle":"Update Develop Guide","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":28,"deletions":24}}}]},{"date":"2024-10-03","commitResults":[{"hash":"d4bd635251a099986b322f57bc936741c1cc15c6","isMergeCommit":true,"messageTitle":"Merge pull request #4 from AY2425S1-CS2103T-T16-2/master","messageBody":"sync","fileTypesAndContributionMap":{}},{"hash":"aa273dd815e038b21c668a2e3d9de96622f36ce7","isMergeCommit":true,"messageTitle":"Resolve merge","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"a973bf40dce6f32ed4f123622f606872dafc9982","isMergeCommit":false,"messageTitle":"Add property","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":8}}},{"hash":"8d5689958b6306914e03099b26b2c4c99fe97474","isMergeCommit":false,"messageTitle":"Shift add property","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":29}}},{"hash":"069b6afea39c2d6a5093f9ab16e7fa782c76655a","isMergeCommit":true,"messageTitle":"Merge pull request #5 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"b967ec0b965e048925fa9cf23e8f4d07c8d248f9","isMergeCommit":true,"messageTitle":"Merge pull request #14 from Virusrwj223/AboutUs","messageBody":"Update about us page","fileTypesAndContributionMap":{}},{"hash":"2ab42a6e26c8b09858096f0747acf2df2e6f4bc0","isMergeCommit":true,"messageTitle":"Merge pull request #6 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"2d6f1d226fe2cd0a8a6cf12dbfd2a7b2767aa6e8","isMergeCommit":true,"messageTitle":"Merge pull request #7 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"8d57045838cd65c4a253b1c96f8cf77105003739","isMergeCommit":false,"messageTitle":"Define property","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":245,"deletions":0}}},{"hash":"729e94bf6e2cbd0c0093a627bca61909b83051dc","isMergeCommit":false,"messageTitle":"Add javaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":51,"deletions":10}}},{"hash":"e6639b8a5e85c9387f1cf421a926ad8673b83fdc","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":9}}}]},{"date":"2024-10-04","commitResults":[{"hash":"f70b96d15bf844a03ada998de3d15f069e3cbcf3","isMergeCommit":false,"messageTitle":"Add tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":1},"test-code":{"insertions":328,"deletions":0}}},{"hash":"c031141cd38a82f106128fc6721ca200c65908fe","isMergeCommit":false,"messageTitle":"Complete model","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":163,"deletions":26},"test-code":{"insertions":102,"deletions":22}}},{"hash":"ef7952fcba29f8de19fdb0d9fcad0eee71722456","isMergeCommit":false,"messageTitle":"Set up storage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":284,"deletions":14},"test-code":{"insertions":116,"deletions":3}}}]},{"date":"2024-10-10","commitResults":[{"hash":"737803887c5d511974cbf2bf1ea854f2a96960d9","isMergeCommit":true,"messageTitle":"Merge pull request #8 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"b36057e8831c8220c1431396d909be09891a8bde","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into CreateProperty","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b54b703152bf4ef017050c0d3291128ff6c8597c","isMergeCommit":false,"messageTitle":"Update JavaDoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"3ed3c99c810f84810f5f7eb10d5a907f5722f875","isMergeCommit":false,"messageTitle":"Update JavaDoc","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":5,"deletions":5}}},{"hash":"590ef347aeeaa24eade4294bedc53f35c33f9699","isMergeCommit":true,"messageTitle":"Merge pull request #64 from Virusrwj223/CreateProperty","messageBody":"Update JavaDoc","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"3ecd2ef473099b08ce2fba21c975b22440ad8dd1","isMergeCommit":true,"messageTitle":"Merge pull request #9 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"f5ae6bcc5fe3ebda5752459defcb2763110cf9f5","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Model","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"402a6b5a9c96df32769ec99fdbfa3e64e5f6437d","isMergeCommit":false,"messageTitle":"Update merge","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":134,"deletions":28},"test-code":{"insertions":162,"deletions":30}}},{"hash":"e8a9880a551ff58490968a34f7cb5d2010f37014","isMergeCommit":true,"messageTitle":"Merge pull request #10 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"881c83c1db0055d73f15a272d8520ded28b3cec9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into Model","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"98783862ad67b577550ef762ef31a36648f35c1a","isMergeCommit":false,"messageTitle":"Update test signature","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":7},"test-code":{"insertions":2,"deletions":4}}},{"hash":"dae6252e053041809a8dae6076cbed1b4e481855","isMergeCommit":true,"messageTitle":"Merge pull request #77 from Virusrwj223/Model","messageBody":"Model","fileTypesAndContributionMap":{}},{"hash":"3cc103723c74214def7872a7701635bfc07b7e78","isMergeCommit":true,"messageTitle":"Merge pull request #11 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"bd33699a9efb55ab56d0988e4c16cc626213bb3d","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into storage","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4df90c54a030894eef7965ed2a9fa6f6fff9958e","isMergeCommit":false,"messageTitle":"Update refactor","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":37,"deletions":1}}},{"hash":"579f6e74ba44bc3242b2d1b02ffdbc1c5e4e2620","isMergeCommit":false,"messageTitle":"Test storage manager","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":23,"deletions":0}}},{"hash":"2733e3abfc382ee31979da3bd4da88b81f8bedd4","isMergeCommit":false,"messageTitle":"Test JsonSerializablePropertyBook","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":51,"deletions":0}}},{"hash":"101efb459c1038ad21dd1844994edd370b5fda16","isMergeCommit":false,"messageTitle":"Fix checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":4},"test-code":{"insertions":8,"deletions":6}}},{"hash":"722018c694f62ff021ca948885b17343ef9f7d57","isMergeCommit":true,"messageTitle":"Merge pull request #12 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"916bb8c3bd6b685b0b8ab441b2b146fa737a29a8","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into storage","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"36345df42d66bd9809dc1b2baedbd29876420e0d","isMergeCommit":false,"messageTitle":"Increase test coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":0}}},{"hash":"17f49c07c51841208134bc6df7b570d21fa8b26a","isMergeCommit":true,"messageTitle":"Merge pull request #80 from Virusrwj223/storage","messageBody":"Setup Storage","fileTypesAndContributionMap":{}},{"hash":"da393e61d0242880ad0b3b8b45623f5e07124268","isMergeCommit":true,"messageTitle":"Merge pull request #13 from AY2425S1-CS2103T-T16-2/master","messageBody":"Sync","fileTypesAndContributionMap":{}},{"hash":"883c5ea2c64028a9148e80d8af0582e6838a648f","isMergeCommit":false,"messageTitle":"Update logic manager","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":14,"deletions":0}}},{"hash":"28c2d6cda7ddacd482bb1741fe64bdfb64b8fe67","isMergeCommit":false,"messageTitle":"Add addPropertyCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":67,"deletions":0}}},{"hash":"fa68a287c03dea3dffca208b4944742368b5953e","isMergeCommit":false,"messageTitle":"Add parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":0}}}]},{"date":"2024-10-13","commitResults":[{"hash":"357353d6eaed7b94e49ed60329fef543426acc81","isMergeCommit":false,"messageTitle":"Test logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":4},"test-code":{"insertions":272,"deletions":0}}},{"hash":"2a85336df464d5112bc274611417903732298e40","isMergeCommit":true,"messageTitle":"Merge pull request #82 from Virusrwj223/Logic","messageBody":"Add Property logic","fileTypesAndContributionMap":{}}]}],"apollo-tan":[{"date":"2024-10-02","commitResults":[{"hash":"f7909a9d6fc982df53b5b8e042cbd8eea4c7ed51","isMergeCommit":true,"messageTitle":"Merge pull request #36 from apollo-tan/add-shiXin-photo","messageBody":"Add Shi Xin\u0027s Photo","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"a5ca3d64d9a9c545deac4fcb096351639b80ba74","isMergeCommit":false,"messageTitle":"Update DG with information pertaining to the list feature","messageBody":"Update the DG: user stories, glossary, NFRs, use cases that is related to the List Feature.\n","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":9}}},{"hash":"686fb829922c1c3eb06c29eac5a340d7c82bd80f","isMergeCommit":false,"messageTitle":"Update AboutUs","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":1}}},{"hash":"7e7d097a612c6c716bfc61e81b54b05e49d64b8b","isMergeCommit":false,"messageTitle":"Resolve extra apostrophe","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":3,"deletions":7}}},{"hash":"549b5c9aa8daa8ad1e9409be2026315fb4ac1cd0","isMergeCommit":false,"messageTitle":"Fix style issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":4}}},{"hash":"3d8acba099b5bebe5cf31839c4730ed87377d6bd","isMergeCommit":false,"messageTitle":"Fix AboutUs style issues","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"794570713c31507fc9560fc0f61d9c3c9392c8db","isMergeCommit":false,"messageTitle":"Add rudimentary support for list command","messageBody":"Add ListCommandParser to parse arguments and create the correct ListCommand associated with the correct key\nUpdate ListCommand to store the key and act accordingly\nUpdate AddressBookParser to parse the new version of the ListCommand appropriately\nUpdate CliSyntax to account for new command prefix KEY\n","fileTypesAndContributionMap":{"functional-code":{"insertions":113,"deletions":4}}},{"hash":"caaf1b4eac9a466180444eb0a00674124d7b17ca","isMergeCommit":false,"messageTitle":"Fix style issues and added some JavaDocs","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":36},"test-code":{"insertions":49,"deletions":29}}},{"hash":"a025a6e9f971a934a90ca9c5161f19030a675dbe","isMergeCommit":false,"messageTitle":"Fix code coverage issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":64,"deletions":11}}},{"hash":"52653c5e3354af69ab2d243458be9f97ec29b2e9","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-setup-list-command","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e9e58c0a8cf06499a28a580e3ec9aee8a46a0485","isMergeCommit":true,"messageTitle":"Merge pull request #65 from apollo-tan/branch-setup-list-command","messageBody":"Add rudimentary support for list command","fileTypesAndContributionMap":{}}]}],"thony-ui":[{"date":"2024-09-29","commitResults":[{"hash":"2f14b83cd9b143686919252a8aadb61ed61e8e89","isMergeCommit":false,"messageTitle":"Update about us page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":7}}}]},{"date":"2024-10-01","commitResults":[{"hash":"6cc509d2565db5135f9d4371a14bec3c7d804a1a","isMergeCommit":false,"messageTitle":"Update site wide settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":6}}},{"hash":"47ca1c34e72440ff028bc41ac0de223f0d13bc3c","isMergeCommit":true,"messageTitle":"Merge pull request #23 from thony-ui/update-site-settings","messageBody":"Update site wide settings","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"88e291560a669abbcf8e3e5ad6cda56067692929","isMergeCommit":false,"messageTitle":"Developer guide for delete clients","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":34,"deletions":14}}},{"hash":"c0a193abdd6257565dd108443a796b5ebb9b6bd4","isMergeCommit":true,"messageTitle":"Fix merge conflict for developer guide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"9d12d9d32c95b7424cc8c88a70df4eeec74bc5b8","isMergeCommit":true,"messageTitle":"Merge pull request #34 from thony-ui/delete-client-developer-guide","messageBody":"Developer guide for delete clients","fileTypesAndContributionMap":{}},{"hash":"dfd4b00cadb1fd81ddc373b8d2a36c21fedc606c","isMergeCommit":false,"messageTitle":"Add pore commit to checkstyle","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":9,"deletions":0}}},{"hash":"03a369cacff869124e50c9fc9744ae8d997fa9c0","isMergeCommit":false,"messageTitle":"Fix CI","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-03","commitResults":[{"hash":"cd873661a0965d078104dc9f1986cb75e1318a5c","isMergeCommit":true,"messageTitle":"Merge pull request #44 from jolwnn/dg-delete-property","messageBody":"Update Developer Guide Delete Property","fileTypesAndContributionMap":{}},{"hash":"bc92d3fc9f62803213141a2b8be1c931a39672ac","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into DeveloperGuide","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"4b0bb135f2244d28786eb188457f2980c2e8e75e","isMergeCommit":true,"messageTitle":"Merge pull request #43 from Virusrwj223/DeveloperGuide","messageBody":"Update Developer guide create property","fileTypesAndContributionMap":{}},{"hash":"b9b45803060e45e2934428de0aaaa4c9e548c48a","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-developer-guide-list","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"154e32951f98f787890e643631d6a69e52151b71","isMergeCommit":true,"messageTitle":"Merge pull request #42 from apollo-tan/update-developer-guide-list","messageBody":"Update DG with information pertaining to the list feature","fileTypesAndContributionMap":{}},{"hash":"a8e2481eb4d65df064bdd5d3ba07bffec14dd424","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-aboutus-shixin","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"81297726ac532bd76450e19b04195d0b3884c96b","isMergeCommit":true,"messageTitle":"Merge pull request #39 from apollo-tan/update-aboutus-shixin","messageBody":"Update AboutUs","fileTypesAndContributionMap":{}}]},{"date":"2024-10-04","commitResults":[{"hash":"63e7357ca674a0770e2339bec370029dcc9467ef","isMergeCommit":false,"messageTitle":"First step to ensure delete client works","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":66,"deletions":0},"test-code":{"insertions":47,"deletions":0}}},{"hash":"e885ae7616fe91af6e24afe2ccc6fb870c06b8ef","isMergeCommit":false,"messageTitle":"Make parser for delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":167,"deletions":24},"test-code":{"insertions":58,"deletions":6}}},{"hash":"31d25d6f9884a83b972213c2f60077a4d0533099","isMergeCommit":false,"messageTitle":"Added test cases for DeleteSeller and DeleteBuyer command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":14},"test-code":{"insertions":74,"deletions":0}}},{"hash":"63e1416bd52b465e41deb5c3445743a5864643d5","isMergeCommit":false,"messageTitle":"Delete client command done","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":40,"deletions":2},"test-code":{"insertions":23,"deletions":11}}}]},{"date":"2024-10-10","commitResults":[{"hash":"e3dba282175df868d2bc4224882bc5bb62c6ef2f","isMergeCommit":true,"messageTitle":"Merge pull request #52 from thony-ui/delete-client-branch","messageBody":"First step to ensure delete client works","fileTypesAndContributionMap":{}},{"hash":"fdd63bec747a72f7ee4b6428c949fdb3fbfab63e","isMergeCommit":true,"messageTitle":"Merge pull request #59 from yongkheehou/fix-v1.2-test-cases","messageBody":"Fix v1.2 test cases","fileTypesAndContributionMap":{}},{"hash":"8885986a9cdccbd39dae728e122d74680b943b45","isMergeCommit":true,"messageTitle":"Merge pull request #63 from Virusrwj223/CreateProperty","messageBody":"Create property Update JavaDoc","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"d4ff219408ad20e2c2f444801a4e9b85da5a0916","isMergeCommit":false,"messageTitle":"Fix errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":32},"test-code":{"insertions":11,"deletions":6}}},{"hash":"f589cb47a4d849fc11ee1cad6f336984ec5df80e","isMergeCommit":true,"messageTitle":"Merge pull request #68 from thony-ui/complete-delete-command","messageBody":"Fix errors","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"35c8cb8d4a02c31da4be25122bf2fcc4407231f2","isMergeCommit":false,"messageTitle":"Complete delete command logic","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":21,"deletions":2},"test-code":{"insertions":4,"deletions":5}}},{"hash":"8922a436464653d31b05b6ecea46cea15133d2cb","isMergeCommit":false,"messageTitle":"Delete buyer and seller command completed","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":2}}},{"hash":"498977696d9273f9e113371dcd8da8baf264ade1","isMergeCommit":false,"messageTitle":"Refractor to phone","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":8},"test-code":{"insertions":19,"deletions":14}}},{"hash":"9c4a11b9fa5949c74449ccdc4d99b22c9f420807","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into delete-command-logic","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"40248ab7cb9fd2ae991c961d8868ae7dea740b05","isMergeCommit":true,"messageTitle":"Merge pull request #72 from thony-ui/delete-command-logic","messageBody":"Delete command logic","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"yongkheehou":{"docs":54,"functional-code":1836,"test-code":1823,"other":2},"jolwnn":{"docs":17,"functional-code":156,"test-code":105},"Virusrwj223":{"docs":27,"functional-code":1028,"test-code":1043},"apollo-tan":{"docs":14,"functional-code":126,"test-code":86},"thony-ui":{"docs":47,"functional-code":253,"test-code":192,"other":9}},"authorContributionVariance":{"yongkheehou":274370.28,"jolwnn":4137.1597,"Virusrwj223":64209.39,"apollo-tan":5084.9844,"thony-ui":11629.204},"authorDisplayNameMap":{"yongkheehou":"CS2103T-T16-2 YONG.. HOU","jolwnn":"CS2103T-T16-2 WEE .. LIN","Virusrwj223":"CS2103T-T16-2 HRIS..NDAL","apollo-tan":"CS2103T-T16-2 TAN .. XIN","thony-ui":"CS2103T-T16-2 ANTH..ANTO"}} diff --git a/AY2425S1-CS2103T-W10-2_tp_master/authorship.json b/AY2425S1-CS2103T-W10-2_tp_master/authorship.json index d431a77e..58328360 100644 --- a/AY2425S1-CS2103T-W10-2_tp_master/authorship.json +++ b/AY2425S1-CS2103T-W10-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":".github/ISSUE_TEMPLATE/bug_report.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"name: Bug Report","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"about: Report an issue to help us improve the project","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"title: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"labels: \"type.Bug\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"assignees: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"**Describe the bug**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"Provide a clear and concise description of the bug.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"**Steps to Reproduce**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"List the steps to reproduce the issue:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":"1. Go to \u0027...\u0027","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"2. Click on \u0027...\u0027","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":"3. Scroll to \u0027...\u0027","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":"4. See the error","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":"**Expected behavior**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":"Describe what you expected to happen instead.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":"**Screenshots**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":"If applicable, include screenshots to illustrate the problem.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":"**Additional context**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":"Provide any other relevant context here.","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"jayjay19630":27}},{"path":".github/ISSUE_TEMPLATE/feature_request.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"name: Feature Request","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"about: Suggest a new feature or improvement","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"title: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"labels: \"type.Enhancement\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"assignees: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"**Describe the solution you\u0027d like**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"Explain the change or new feature you want to see.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"**Additional context**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"Include any additional details or screenshots to support your suggestion.","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"jayjay19630":13}},{"path":".github/ISSUE_TEMPLATE/user_story.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"name: User Story","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"about: Describe a feature or functionality from the user\u0027s perspective","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"title: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"labels: [\"type.Story\", \"type.Epic\"]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"assignees: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"**...so that** [benefit].","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"**Additional context**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"- Include any other relevant information or screenshots.","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"jayjay19630":13}},{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"rxchell"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W10-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-W08-3/tp/actions)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"[![Codecov](https://codecov.io/gh/AY2425S1-CS2103T-W10-2/tp/graph/badge.svg?token\u003d134QRO3UI3)](https://codecov.io/gh/AY2425S1-CS2103T-W10-2/tp)","lastModifiedDate":"2024-09-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"rxchell"},"content":"# DocTrack","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":"**DocTrack** is **a project done by Software Engineering (SE) students**.\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"## What is DocTrack?","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"rxchell"},"content":"* DocTrack helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"rxchell"},"content":"* It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"rxchell"},"content":"## More about it","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"rxchell"},"content":" * For user and developer documentation**, head over to **[DocTrack Documentation](https://ay2425s1-cs2103t-w10-2.github.io/tp/)**.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"rxchell"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org)","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"rxchell":12,"-":5}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zaidansani"},"content":"You can reach us at our individual emails below!","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Vangmay"},"content":"### Vangmay Sachan","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Vangmay"},"content":"\u003cimg src\u003d\"images/vangmay.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":"[[github](https://github.com/vangmay)] ","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":"[[portfolio](team/vangmay.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":"* Roles: Developer, Quality Assurance","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Vangmay"},"content":"* Responsibilities: Logic","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zaidansani"},"content":"### Muhammad ZAIDAN bin Sani","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zaidansani"},"content":"\u003cimg src\u003d\"images/zaidansani.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zaidansani"},"content":"[[github](https://github.com/zaidansani)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zaidansani"},"content":"[[email](mailto:zaidan@u.nus.edu)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zaidansani"},"content":"[[portfolio](team/zaidansani.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":"* Roles: Team Lead, Developer, Integration","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":"* Responsibilities: Model","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"choiwab"},"content":"### Jae Choi","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"choiwab"},"content":"\u003cimg src\u003d\"images/choiwab.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":"[[github](http://github.com/choiwab)] ","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":"[[portfolio](team/choiwab.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":"* Roles: Developer, Code quality","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":"* Responsibilities: Storage","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"rxchell"},"content":"### Rachel Tai","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"rxchell"},"content":"\u003cimg src\u003d\"images/rxchell.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"rxchell"},"content":"[[github](https://github.com/rxchell)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"rxchell"},"content":"[[portfolio](team/rxchell.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":"* Roles: Developer, Documentation","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"rxchell"},"content":"* Responsibilities: Commons","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":"### Jo An","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":"\u003cimg src\u003d\"images/jayjay19630.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":"[[github](https://github.com/jayjay19630)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":"[[email](mailto:jo.an@u.nus.edu)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":"[[portfolio](team/jayjay19630.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":"* Roles: Developer, Deliverables and Deadlines, Scheduling and Tracking","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"Vangmay":3,"jayjay19630":16,"rxchell":5,"choiwab":2,"zaidansani":6,"-":32}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"rxchell"},"content":"* General Practitioners (GPs) at small clinics","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"rxchell"},"content":"**Value proposition**: Time spent looking through paper medical documents should be spent in other life-saving activities. Our product resolves this issue by creating fast access to patient contact details as well as their relevant appointment/treatment details, allowing GPs to contact and monitor their patients easily.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"rxchell"},"content":"|----------|----------------------|----------------------------------------------------|----------------------------------------------------------------------|","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"rxchell"},"content":"| `* * *` | doctor | add appointments | find them in the future for reference |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"rxchell"},"content":"| `* * *` | doctor | schedule a new patient appointment | ensure that the patient is properly booked for consultation |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"rxchell"},"content":"| `* * *` | doctor | remove an appointment that is no longer needed | free up time slots for other patients and avoid scheduling conflicts |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"rxchell"},"content":"| `* * *` | doctor | view all upcoming appointments for better planning | organize my day effectively and ensure no appointments are missed |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"rxchell"},"content":"| `* * *` | administrative staff | manage patient contact information | easily communicate with patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"rxchell"},"content":"| `* * *` | administrative staff | update patient details | maintain accurate records |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"rxchell"},"content":"| `* * *` | administrative staff | get details on a specific patient\u0027s appointments | keep track of the patient |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"rxchell"},"content":"| `* * *` | administrative staff | store all patients information | retrieve them in the future |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"rxchell"},"content":"| `* * *` | nurse | track appointments | get ready to serve patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | access appointment history | understand patient visit patterns |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | categorize patients by conditions or treatments | easily track patient groups |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | find free slots in the appointments | find gaps for appointments or holidays |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"rxchell"},"content":"| `* *` | administrative staff | get details on appointments for the day | keep track of the day\u0027s appointments |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | shift appointments to a different time | change appointments based on holidays, etc. |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"rxchell"},"content":"| `* *` | administrative staff | schedule follow-up appointments | keep track of patients\u0027 appointments |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | add mood status to appointment details | keep track of patient health each time we meet |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | sort patients by closest future appointment date | see which patient to see next |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | find duplicate errors within the system | not have erroneous appointments |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | organize appointments | arrange my schedule accordingly |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | set holidays/free days | disallow appointments during certain dates |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"rxchell"},"content":"| `* * ` | doctor | categorise patients based on certain factors | easily track patients with certain statuses |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"rxchell"},"content":"| `* * ` | doctor | add list of allergies for a certain patient | not prescribe them stuff that will kill them |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | view patient\u0027s medical history | make informed treatment decisions |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | access test results for patients | review and discuss results with patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | set reminders for specific patient actions | ensure follow-up on important tasks |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | retrieve medical certificates of patients | gather patient information quickly |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | record the medications given to patients | keep track of personal medication records of patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"rxchell"},"content":"| `*` | administrative staff | search for patient files by name or ID | quickly retrieve specific records |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"rxchell"},"content":"| `*` | administrative staff | check prescription assigned by the doctor | print out prescription for patient |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | search up medicine to prescribe | give prescription to patient |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | add notes to patient files | reference them during future visits |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | change the time frame for receiving reminders | receive reminders more frequently or less frequently |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | add guardian/parental contacts to patient | contact patient indirectly |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | update patient status | keep track of patient\u0027s condition |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | copy treatments | duplicate medication plans for similar patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | receive reminders on upcoming appointments | prepare for them |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | retrieve specific treatment information | treat them appropriately |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | generate an automated document for a patient | give it to them as reference |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"jayjay19630"},"content":"(For all use cases below, the **System** is the `DocTrack` application and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"jayjay19630"},"content":"**Use case: Update a patient**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"jayjay19630"},"content":"3. User requests to update a specific patient in the list with new details","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack updates the patient.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"jayjay19630"},"content":"* 3b. The new patient details are invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"jayjay19630"},"content":" * 3b1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"jayjay19630"},"content":"**Use case: Delete a patient**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"jayjay19630"},"content":"3. User requests to delete a specific patient in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack deletes the patient.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"jayjay19630"},"content":"**Use case: Find appointments for a specific patient**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"jayjay19630"},"content":"3. User requests to list appoinments for a specific patient in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack shows a list of appointments for that patient.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"jayjay19630"},"content":"**Use case: Add an appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"jayjay19630"},"content":"3. User requests to add an appoinment for a specific patient in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack adds appointment.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"jayjay19630"},"content":"* 3b. The appointment details are invalid (i.e. wrongly formatted or overlap with existing appointment)","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"jayjay19630"},"content":" * 3b1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"jayjay19630"},"content":"**Use case: Duplicate an appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"jayjay19630"},"content":"3. User requests to duplicate a specific appointment in the list on a new date.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack duplicates appointment.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"jayjay19630"},"content":"* 3b. The appointment details are invalid (i.e. wrongly formatted or overlap with existing appointment)","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"jayjay19630"},"content":" * 3b1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"jayjay19630"},"content":"**Use case: Update an appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"jayjay19630"},"content":"3. User requests to update a specific appointment in the list with new details","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack updates the appointment.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"jayjay19630"},"content":"* 3b. The new details are invalid (i.e. wrongly formatted).","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"jayjay19630"},"content":" * 3b1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"jayjay19630"},"content":"**Use case: Delete an appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"jayjay19630"},"content":"3. User requests to delete a specific appointment in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack deletes the appointment.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"jayjay19630"},"content":"**Use case: Find patient for a specific appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"jayjay19630"},"content":"3. User requests to find patient for a specific appointment in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack shows patient details.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"zaidansani"},"content":"2. Should work on any _reasonable system_ with good performance: common operation such as retrieving patient data must complete within 1 second, and complex operations must complete within 3 seconds.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":543,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":544,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"zaidansani"},"content":"4. Should not require installation","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"zaidansani"},"content":"5. Must not operate with dependency on any remote server","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"zaidansani"},"content":"6. No usage of DBMS","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"zaidansani"},"content":"7. Main product file must not exceed 100MB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"zaidansani"},"content":"8. Documentation must not exceed 15MB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"zaidansani"},"content":"9. Product should be designed for typing-preferred consumers, offering a CLI experience","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"zaidansani"},"content":"10. Product should be designed for a single user.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"zaidansani"},"content":"11. Product must function correctly on _standard resolutions_ and support scaling of 100%, 125%, 150%.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"zaidansani"},"content":"12. Data must be persistent, with all changes saved immediately to local storage","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"zaidansani"},"content":"13. Data files must be in a format that can be edited manually by advanced users","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"zaidansani"},"content":"14. Data file must remain usable and intact even with invalid input from the application","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"zaidansani"},"content":"15. Errors must trigger clear, user-friendly messages","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"zaidansani"},"content":"* **Reasonable system**: A system with an OS matching the criteria above, with parts with a release date maximum 10 years from the current date","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"zaidansani"},"content":"* **Standard resolutions**: 1920x1080 and 1080x720","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":584,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":588,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":596,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":602,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":607,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":610,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"rxchell":41,"jayjay19630":156,"zaidansani":15,"-":406}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"rxchell"},"content":"# DocTrack","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W10-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-W10-2/tp/actions)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"[![Codecov](https://codecov.io/gh/AY2425S1-CS2103T-W10-2/tp/graph/badge.svg?token\u003d134QRO3UI3)](https://codecov.io/gh/AY2425S1-CS2103T-W10-2/tp)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":"**DocTrack is a desktop application for general practitioners (GPs) to quickly access patient contact ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"rxchell"},"content":"details, appointments, and treatment records.** While it has a GUI, most of the user ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"rxchell"},"content":"interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"rxchell"},"content":"* If you are interested in using DocTrack, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"rxchell"},"content":"* If you are interested about developing DocTrack, the [**Developer Guide**](DeveloperGuide.html) is a good ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":" place to start.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"rxchell":9,"-":15}},{"path":"docs/team/choiwab.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"choiwab"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"choiwab"},"content":" layout: default.md","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"choiwab"},"content":" title: \"Jae\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"choiwab"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"choiwab"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"jayjay19630":4,"choiwab":8}},{"path":"docs/team/jayjay19630.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":" layout: default.md","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":" title: \"Jo An\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"jayjay19630":12}},{"path":"docs/team/rxchell.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"rxchell"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"rxchell"},"content":" layout: default.md","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"rxchell"},"content":" title: \"Rachel\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"rxchell"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"rxchell"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"rxchell"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"rxchell":12}},{"path":"docs/team/vangmay.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Vangmay"},"content":" title: \"Vangmay\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Vangmay"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Vangmay"},"content":"Given below are my contributions to the project:","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"Vangmay":3,"jayjay19630":2,"-":7}},{"path":"docs/team/zaidansani.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zaidansani"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zaidansani"},"content":" layout: default.md","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":" title: \"Zaidan\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zaidansani"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zaidansani"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zaidansani"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"zaidansani":9}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" public static String formatPerson(Person person) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"jayjay19630":1,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":" * Adds an entity (person or appointment) to the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"public abstract class AddCommand extends Command {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" + \": Adds an entity (person or appointment) to the address book. \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" + \"ENTITY_TYPE \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" + \"ENTITY_ARGUMENTS...\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" + \"Example: \" + COMMAND_WORD + \" person \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" if (alreadyExists(model)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" throw new CommandException(getDuplicateEntityMessage());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" addEntity(model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" return new CommandResult(String.format(getSuccessMessage(), formatEntity()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" * Checks if the entity being added to model already exists.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" protected abstract boolean alreadyExists(Model model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" * Adds the entity to the model.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" protected abstract void addEntity(Model model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" * Returns success message to display upon adding entity.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" protected abstract String getSuccessMessage();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" * Returns the message to display when there is a duplicate.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" protected abstract String getDuplicateEntityMessage();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":" * Formats the entity for displaying in the success message.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" protected abstract String formatEntity();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"jayjay19630":32,"-":36}},{"path":"src/main/java/seedu/address/logic/commands/AddPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" * Adds a person to the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":"public class AddPersonCommand extends AddCommand {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \" \" + \"person\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":" + \": Adds a person to the address book. \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + \"person\" + \" \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" private final Person toAdd;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" * Creates an AddPersonCommand to add the specified {@code Person}","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" public AddPersonCommand(Person person) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(person);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" toAdd \u003d person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" protected boolean alreadyExists(Model model) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" return model.hasPerson(toAdd);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" protected void addEntity(Model model) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" protected String getSuccessMessage() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" return MESSAGE_SUCCESS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":" protected String getDuplicateEntityMessage() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" return MESSAGE_DUPLICATE_PERSON;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jayjay19630"},"content":" protected String formatEntity() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jayjay19630"},"content":" return Messages.formatPerson(toAdd);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jayjay19630"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jayjay19630"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":" if (!(other instanceof AddPersonCommand)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" return false;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand otherAddPersonCommand \u003d (AddPersonCommand) other;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" return toAdd.equals(otherAddPersonCommand.toAdd);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" public String toString() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jayjay19630"},"content":" .toString();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":95}},{"path":"src/main/java/seedu/address/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zaidansani"},"content":" * Clears the model - person, or appointment.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zaidansani"},"content":"public abstract class ClearCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zaidansani"},"content":" public static final String MESSAGE_USAGE \u003d \"clear person OR clear appt\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zaidansani"},"content":" clearEntity(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zaidansani"},"content":" return new CommandResult(getSuccessMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zaidansani"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zaidansani"},"content":" * Clears a specified model.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zaidansani"},"content":" protected abstract void clearEntity(Model model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zaidansani"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zaidansani"},"content":" * Returns success message to display upon adding entity.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zaidansani"},"content":" protected abstract String getSuccessMessage();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"zaidansani":15,"-":16}},{"path":"src/main/java/seedu/address/logic/commands/ClearPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zaidansani"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zaidansani"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zaidansani"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zaidansani"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zaidansani"},"content":" * Clears the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zaidansani"},"content":"public class ClearPersonCommand extends ClearCommand {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zaidansani"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Address book has been cleared!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zaidansani"},"content":" protected void clearEntity(Model model) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zaidansani"},"content":" model.setAddressBook(new AddressBook());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zaidansani"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zaidansani"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zaidansani"},"content":" * Returns success message to display upon adding entity.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zaidansani"},"content":" protected String getSuccessMessage() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zaidansani"},"content":" return MESSAGE_SUCCESS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zaidansani"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zaidansani"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"zaidansani":23}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":" * Deletes an entity identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"public abstract class DeleteCommand extends Command {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":" + \": Deletes the entity identified by the index number used in the displayed list.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + \"person\" + \" \" + \"1\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" protected final Index targetIndex;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" * @param targetIndex Index of entity to be deleted.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" List\u003c?\u003e lastShownList \u003d getFilteredList(model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" throw new CommandException(getInvalidIndexMessage());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" Object entityToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" deleteEntity(model, entityToDelete);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" return new CommandResult(String.format(getSuccessMessage(), formatEntity(entityToDelete)));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" * Gets the filtered list of entities in the model.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" protected abstract List\u003c?\u003e getFilteredList(Model model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" * Deletes the entity from the model.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" protected abstract void deleteEntity(Model model, Object entity) throws CommandException;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" * Returns the success message to display upon deleting entity.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" protected abstract String getSuccessMessage();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" * Returns the invalid index message when the index is out of bounds.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" protected abstract String getInvalidIndexMessage();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" * Formats the entity for displaying in the success message.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" protected abstract String formatEntity(Object entity);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":38,"-":32}},{"path":"src/main/java/seedu/address/logic/commands/DeletePersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":"public class DeletePersonCommand extends DeleteCommand {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + \"person\" + \" \" + \"1\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zaidansani"},"content":" public DeletePersonCommand(Index targetIndex) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" super(targetIndex);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" protected List\u003cPerson\u003e getFilteredList(Model model) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" protected void deleteEntity(Model model, Object entity) throws CommandException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(entity);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" assert entity instanceof Person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" model.deletePerson((Person) entity);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" protected String getSuccessMessage() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" return MESSAGE_DELETE_PERSON_SUCCESS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" protected String getInvalidIndexMessage() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" return Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" protected String formatEntity(Object entity) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" assert entity instanceof Person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" return Messages.formatPerson((Person) entity);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zaidansani"},"content":" if (!(other instanceof DeletePersonCommand)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand otherDeletePersonCommand \u003d (DeletePersonCommand) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zaidansani"},"content":" return targetIndex.equals(otherDeletePersonCommand.targetIndex);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"jayjay19630":28,"zaidansani":4,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatPerson(editedPerson)));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags);","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"jayjay19630":1,"-":241}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Vangmay"},"content":" * Finds and lists all persons or appointments in address book whose name contains any of the argument keywords.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Vangmay"},"content":"public abstract class FindCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Vangmay"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Vangmay"},"content":" + \": Finds all persons or appointments whose names contain any of \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Vangmay"},"content":" protected final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Vangmay"},"content":" findEntity(model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Vangmay"},"content":" return new CommandResult(getSuccessMessage(model));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Vangmay"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Vangmay"},"content":" * Finds the person/appointment from the list","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Vangmay"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Vangmay"},"content":" protected abstract void findEntity(Model model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Vangmay"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Vangmay"},"content":" * Returns the message to be displayed after finding all persons or appointments matching the query.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Vangmay"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Vangmay"},"content":" * @return Success message","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Vangmay"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Vangmay"},"content":" protected abstract String getSuccessMessage(Model model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"Vangmay":20,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/FindPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Vangmay"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Vangmay"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Vangmay"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Vangmay"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Vangmay"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Vangmay"},"content":" * Finds the person from the list of patients","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Vangmay"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Vangmay"},"content":"public class FindPersonCommand extends FindCommand {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Vangmay"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Person has been found\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Vangmay"},"content":" public FindPersonCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Vangmay"},"content":" super(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Vangmay"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Vangmay"},"content":" * Finds all persons with names matching the predicate in the address book to the user.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Vangmay"},"content":" * @param model {@code Model} which the FindPersonCommand should operate on.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Vangmay"},"content":" * */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Vangmay"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Vangmay"},"content":" protected void findEntity(Model model) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Vangmay"},"content":" model.updateFilteredPersonList(this.predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Vangmay"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Vangmay"},"content":" * Returns the message to be displayed after finding the person.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Vangmay"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Vangmay"},"content":" * @return the message to be displayed after finding all persons.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Vangmay"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Vangmay"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Vangmay"},"content":" public String getSuccessMessage(Model model) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Vangmay"},"content":" return String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Vangmay"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"Vangmay":35}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":" * Lists all persons or appointments in the address book to the user.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"public abstract class ListCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":" public static final String MESSAGE_USAGE \u003d \"list person OR list appt\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"rxchell"},"content":" listEntity(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":" return new CommandResult(getSuccessMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"rxchell"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"rxchell"},"content":" * Lists everything in the model (person or appointment).","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"rxchell"},"content":" protected abstract void listEntity(Model model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"rxchell"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"rxchell"},"content":" * Returns the message to be displayed after listing all persons or appointments.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"rxchell"},"content":" protected abstract String getSuccessMessage();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"rxchell":15,"-":16}},{"path":"src/main/java/seedu/address/logic/commands/ListPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rxchell"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"rxchell"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"rxchell"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"rxchell"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":" * Lists all persons in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"public class ListPersonCommand extends ListCommand {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"rxchell"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"rxchell"},"content":" * Lists all persons in the address book to the user.*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"rxchell"},"content":" * @param model {@code Model} which the ListPersonCommand should operate on.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"rxchell"},"content":" * */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"rxchell"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"rxchell"},"content":" protected void listEntity(Model model) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"rxchell"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"rxchell"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":" * Returns the message to be displayed after listing all persons.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"rxchell"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"rxchell"},"content":" * @return the message to be displayed after listing all persons.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"rxchell"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"rxchell"},"content":" protected String getSuccessMessage() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"rxchell"},"content":" return MESSAGE_SUCCESS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"rxchell"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"rxchell":32}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.commands.AddPersonCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" String entityType \u003d argMultimap.getEntityType();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddPersonCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person person \u003d new Person(name, phone, email, address, tagList);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" return new AddPersonCommand(person);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" //TODO: Instantiate and return AddAppointmentCommand","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" default:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"jayjay19630":14,"-":57}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zaidansani"},"content":" return new ClearCommandParser().parse(arguments);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"rxchell"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"rxchell":1,"zaidansani":2,"-":84}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" public String getEntityType() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" return getPreamble().split(\" \")[0];","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":7,"-":78}},{"path":"src/main/java/seedu/address/logic/parser/ClearCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zaidansani"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zaidansani"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zaidansani"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zaidansani"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.commands.ClearPersonCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zaidansani"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zaidansani"},"content":" * Parses input arguments and creates a new ClearCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zaidansani"},"content":"public class ClearCommandParser implements Parser\u003cClearCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zaidansani"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zaidansani"},"content":" * Parses the given {@code String} of arguments in the context of the ClearCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zaidansani"},"content":" * and returns a ClearCommand object for execution.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zaidansani"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zaidansani"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zaidansani"},"content":" public ClearCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zaidansani"},"content":" String entityType \u003d args.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zaidansani"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zaidansani"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zaidansani"},"content":" return new ClearPersonCommand();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zaidansani"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zaidansani"},"content":" //TODO: Instantiate and return ClearAppointmentCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zaidansani"},"content":" default:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zaidansani"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zaidansani"},"content":" ClearCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zaidansani"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"zaidansani"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zaidansani"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"zaidansani":35}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" String[] splitArgs \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" if (splitArgs.length !\u003d 2) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" String entityType \u003d splitArgs[0];","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" String indexString \u003d splitArgs[1];","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" try {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" Index index \u003d ParserUtil.parseIndex(indexString);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" return new DeletePersonCommand(index);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeletePersonCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" //TODO: Instantiate and return DeleteAppointmentCommand","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" default:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":26,"-":23}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Vangmay"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Vangmay"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Vangmay"},"content":"import seedu.address.logic.commands.FindPersonCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Vangmay"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Vangmay"},"content":" * @param args user input","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Vangmay"},"content":" * @return findCommand object for execution","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Vangmay"},"content":" String entityType \u003d nameKeywords[0];","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Vangmay"},"content":" nameKeywords \u003d Arrays.copyOfRange(nameKeywords, 1, nameKeywords.length);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Vangmay"},"content":" if (nameKeywords.length \u003d\u003d 0) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Vangmay"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Vangmay"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Vangmay"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Vangmay"},"content":" return new FindPersonCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Vangmay"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Vangmay"},"content":" //TODO: Instantiate and return FindAppointmentCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Vangmay"},"content":" default:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Vangmay"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"Vangmay":21,"-":32}},{"path":"src/main/java/seedu/address/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rxchell"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"rxchell"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"rxchell"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"rxchell"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"rxchell"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":"import seedu.address.logic.commands.ListPersonCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"rxchell"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"rxchell"},"content":" * Parses input arguments and creates a new ListCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"rxchell"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"rxchell"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"rxchell"},"content":" * Parses the given {@code String} of arguments for ListCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"rxchell"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"rxchell"},"content":" * @param args user input","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":" * @return ListCommand object for execution","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"rxchell"},"content":" * @throws ParseException if the user input does not follow the expected format","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"rxchell"},"content":" public ListCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":" String entityType \u003d args.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"rxchell"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"rxchell"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"rxchell"},"content":" return new ListPersonCommand();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"rxchell"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"rxchell"},"content":" //TODO: Instantiate and return ListAppointmentCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"rxchell"},"content":" default:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"rxchell"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"rxchell"},"content":" ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"rxchell"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"rxchell":36}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Vangmay"},"content":" public static final String PERSON_ENTITY_STRING \u003d \"person\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Vangmay"},"content":" public static final String APPOINTMENT_ENTITY_STRING \u003d \"appt\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"Vangmay":2,"-":124}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":" // Static counter to track the number of persons","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"rxchell"},"content":" private static int personIDCounter \u003d 0;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"rxchell"},"content":" // Unique person ID","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"rxchell"},"content":" private final int personId;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"rxchell"},"content":" // Increment the static counter and assign a unique ID to the person","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"rxchell"},"content":" this.personId \u003d ++personIDCounter;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"rxchell"},"content":" public int getPersonId() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"rxchell"},"content":" return personId;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"rxchell":13,"-":117}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":"import seedu.address.logic.commands.ListPersonCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zaidansani"},"content":" String deleteCommand \u003d \"delete person 9\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"rxchell"},"content":" String listCommand \u003d ListPersonCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"rxchell"},"content":" assertCommandSuccess(listCommand, ListPersonCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"jayjay19630"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"jayjay19630":2,"rxchell":3,"zaidansani":1,"-":170}},{"path":"src/test/java/seedu/address/logic/commands/AddPersonCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"rxchell"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":"import java.lang.reflect.Field;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"rxchell"},"content":"public class AddPersonCommandIntegrationTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"rxchell"},"content":" @BeforeEach","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"rxchell"},"content":" public void resetCounter() throws Exception {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"rxchell"},"content":" // Use reflection to reset the personIDCounter","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"rxchell"},"content":" Field personIdCounterField \u003d Person.class.getDeclaredField(\"personIDCounter\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"rxchell"},"content":" personIdCounterField.setAccessible(true);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"rxchell"},"content":" // Reset counter to 0 before each test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"rxchell"},"content":" personIdCounterField.setInt(null, 0);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"rxchell"},"content":" // Verify personId increments correctly","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"rxchell"},"content":" assertEquals(1, validPerson.getPersonId());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" assertCommandSuccess(new AddPersonCommand(validPerson), model,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" String.format(AddPersonCommand.MESSAGE_SUCCESS, Messages.formatPerson(validPerson)),","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" assertCommandFailure(new AddPersonCommand(personInList), model,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"rxchell":18,"jayjay19630":4,"-":43}},{"path":"src/test/java/seedu/address/logic/commands/AddPersonCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":"public class AddPersonCommandTest {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddPersonCommand(null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" CommandResult commandResult \u003d new AddPersonCommand(validPerson).execute(modelStub);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" assertEquals(String.format(AddPersonCommand.MESSAGE_SUCCESS, Messages.formatPerson(validPerson)),","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addPersonCommand \u003d new AddPersonCommand(validPerson);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addPersonCommand.execute(modelStub));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addAliceCommand \u003d new AddPersonCommand(alice);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addBobCommand \u003d new AddPersonCommand(bob);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addAliceCommandCopy \u003d new AddPersonCommand(alice);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addPersonCommand \u003d new AddPersonCommand(ALICE);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jayjay19630"},"content":" String expected \u003d AddPersonCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" assertEquals(expected, addPersonCommand.toString());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":13,"-":192}},{"path":"src/test/java/seedu/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zaidansani"},"content":" assertCommandSuccess(new ClearPersonCommand(), model, ClearPersonCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zaidansani"},"content":" assertCommandSuccess(new ClearPersonCommand(), model, ClearPersonCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08","isFullCredit":false}],"authorContributionMap":{"zaidansani":2,"-":30}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" public static final String PERSON_ENTITY_STRING \u003d \"person \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" public static final String PERSON_APPOINTMENT_STRING \u003d \"appt \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"-":128}},{"path":"src/test/java/seedu/address/logic/commands/DeletePersonCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zaidansani"},"content":"public class DeletePersonCommandTest {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zaidansani"},"content":" String expectedMessage \u003d String.format(DeletePersonCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" Messages.formatPerson(personToDelete));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"zaidansani"},"content":" assertCommandSuccess(deletePersonCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zaidansani"},"content":" assertCommandFailure(deletePersonCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"zaidansani"},"content":" String expectedMessage \u003d String.format(DeletePersonCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" Messages.formatPerson(personToDelete));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"zaidansani"},"content":" assertCommandSuccess(deletePersonCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zaidansani"},"content":" assertCommandFailure(deletePersonCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deleteFirstCommand \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deleteSecondCommand \u003d new DeletePersonCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deleteFirstCommandCopy \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(targetIndex);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"zaidansani"},"content":" String expected \u003d DeletePersonCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"zaidansani"},"content":" assertEquals(expected, deletePersonCommand.toString());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"jayjay19630":2,"zaidansani":17,"-":101}},{"path":"src/test/java/seedu/address/logic/commands/EditCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"public class EditCommandTest {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatPerson(editedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(indexLastPerson, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatPerson(editedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatPerson(editedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"jayjay19630"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatPerson(editedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(outOfBoundIndex,","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" final EditCommand standardCommand \u003d new EditCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" EditCommand commandWithSameValues \u003d new EditCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"zaidansani"},"content":" assertFalse(standardCommand.equals(new ClearPersonCommand()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" EditCommand editCommand \u003d new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" String expected \u003d EditCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" assertEquals(expected, editCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":8,"zaidansani":1,"-":179}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Vangmay"},"content":" FindCommand findFirstCommand \u003d new FindPersonCommand(firstPredicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Vangmay"},"content":" FindCommand findSecondCommand \u003d new FindPersonCommand(secondPredicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Vangmay"},"content":" FindCommand findFirstCommandCopy \u003d new FindPersonCommand(firstPredicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Vangmay"},"content":" FindCommand command \u003d new FindPersonCommand(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"Vangmay"},"content":" FindCommand command \u003d new FindPersonCommand(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"Vangmay"},"content":" FindPersonCommand findCommand \u003d new FindPersonCommand(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"Vangmay"},"content":" String expected \u003d FindPersonCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"Vangmay":7,"-":84}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"rxchell"},"content":" assertCommandSuccess(new ListPersonCommand(), model, ListPersonCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"rxchell"},"content":" expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"rxchell"},"content":" assertCommandSuccess(new ListPersonCommand(), model, ListPersonCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"rxchell"},"content":" expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"rxchell":4,"-":37}},{"path":"src/test/java/seedu/address/logic/parser/AddPersonCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.commands.AddPersonCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":"public class AddPersonCommandParserTest {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" // whitespace before person entity string in preamble","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + PERSON_ENTITY_STRING + NAME_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddPersonCommand(expectedPerson));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" new AddPersonCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jayjay19630"},"content":" + ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"jayjay19630"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"jayjay19630"},"content":" new AddPersonCommand(expectedPerson));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddPersonCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"jayjay19630"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"jayjay19630"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"jayjay19630"},"content":" PREAMBLE_NON_EMPTY + PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"jayjay19630":57,"-":159}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.commands.AddPersonCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Vangmay"},"content":"import seedu.address.logic.commands.FindPersonCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" public void parseCommand_addPerson() throws Exception {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand command \u003d (AddPersonCommand) parser.parseCommand(PersonUtil.getAddPersonCommand(person));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" assertEquals(new AddPersonCommand(person), command);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zaidansani"},"content":" public void parseCommand_clearPersonCommand() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zaidansani"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zaidansani"},"content":" +","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"zaidansani"},"content":" \" \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zaidansani"},"content":" + ParserUtil.PERSON_ENTITY_STRING) instanceof ClearCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"zaidansani"},"content":" /* ToDo: Make this work","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"zaidansani"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD +","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"zaidansani"},"content":" \" \" + ParserUtil.PERSON_ENTITY_STRING + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand command \u003d (DeletePersonCommand) parser.parseCommand(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" DeletePersonCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"zaidansani"},"content":" assertEquals(new DeletePersonCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"zaidansani"},"content":" // assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"Vangmay"},"content":" FindCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING + \" \" + \"foo bar baz\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"Vangmay"},"content":" assertEquals(new FindPersonCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"rxchell"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"rxchell"},"content":" + ParserUtil.PERSON_ENTITY_STRING) instanceof ListCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"rxchell"},"content":" // TODO: assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"Vangmay":3,"jayjay19630":6,"rxchell":3,"zaidansani":13,"-":84}},{"path":"src/test/java/seedu/address/logic/parser/DeletePersonCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zaidansani"},"content":"public class DeletePersonCommandParserTest {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" assertParseSuccess(parser, PERSON_ENTITY_STRING + \"1\", new DeletePersonCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zaidansani"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"zaidansani":3,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Vangmay"},"content":"import seedu.address.logic.commands.FindPersonCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Vangmay"},"content":" new FindPersonCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Vangmay"},"content":" assertParseSuccess(parser, \"person Alice Bob\", expectedFindCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Vangmay"},"content":" assertParseSuccess(parser, \"person \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"Vangmay":4,"-":31}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" public static String getAddPersonCommand(Person person) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" return AddCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING + \" \" + getPersonDetails(person);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"-":60}}] +[{"path":".github/ISSUE_TEMPLATE/bug_report.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"name: Bug Report","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"about: Report an issue to help us improve the project","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"title: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"labels: \"type.Bug\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"assignees: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"**Describe the bug**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"Provide a clear and concise description of the bug.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"**Steps to Reproduce**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"List the steps to reproduce the issue:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":"1. Go to \u0027...\u0027","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"2. Click on \u0027...\u0027","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":"3. Scroll to \u0027...\u0027","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":"4. See the error","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":"**Expected behavior**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":"Describe what you expected to happen instead.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":"**Screenshots**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":"If applicable, include screenshots to illustrate the problem.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":"**Additional context**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":"Provide any other relevant context here.","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"jayjay19630":27}},{"path":".github/ISSUE_TEMPLATE/feature_request.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"name: Feature Request","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"about: Suggest a new feature or improvement","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"title: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"labels: \"type.Enhancement\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"assignees: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"**Describe the solution you\u0027d like**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"Explain the change or new feature you want to see.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"**Additional context**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"Include any additional details or screenshots to support your suggestion.","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"jayjay19630":13}},{"path":".github/ISSUE_TEMPLATE/user_story.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"name: User Story","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"about: Describe a feature or functionality from the user\u0027s perspective","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"title: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"labels: [\"type.Story\", \"type.Epic\"]","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"assignees: \"\"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"**...so that** [benefit].","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"**Additional context**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"- Include any other relevant information or screenshots.","lastModifiedDate":"2024-10-03","isFullCredit":false}],"authorContributionMap":{"jayjay19630":13}},{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"rxchell"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W10-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-W08-3/tp/actions)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"[![Codecov](https://codecov.io/gh/AY2425S1-CS2103T-W10-2/tp/graph/badge.svg?token\u003d134QRO3UI3)](https://codecov.io/gh/AY2425S1-CS2103T-W10-2/tp)","lastModifiedDate":"2024-09-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"rxchell"},"content":"# DocTrack","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":"**DocTrack** is **a project done by Software Engineering (SE) students**.\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"## What is DocTrack?","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"rxchell"},"content":"* DocTrack helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"rxchell"},"content":"* It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"rxchell"},"content":"## More about it","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * It is **written in OOP fashion**. It provides a **reasonably well-written** code base **bigger** (around 6 KLoC) than what students usually write in beginner-level SE modules, without being overwhelmingly big.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"rxchell"},"content":" * For user and developer documentation**, head over to **[DocTrack Documentation](https://ay2425s1-cs2103t-w10-2.github.io/tp/)**.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"rxchell"},"content":"* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org)","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"rxchell":12,"-":5}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zaidansani"},"content":"You can reach us at our individual emails below!","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Vangmay"},"content":"### Vangmay Sachan","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Vangmay"},"content":"\u003cimg src\u003d\"images/vangmay.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":"[[github](https://github.com/vangmay)] ","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":"[[portfolio](team/vangmay.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":"* Roles: Developer, Quality Assurance","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Vangmay"},"content":"* Responsibilities: Logic","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zaidansani"},"content":"### Muhammad ZAIDAN bin Sani","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zaidansani"},"content":"\u003cimg src\u003d\"images/zaidansani.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zaidansani"},"content":"[[github](https://github.com/zaidansani)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zaidansani"},"content":"[[email](mailto:zaidan@u.nus.edu)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zaidansani"},"content":"[[portfolio](team/zaidansani.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":"* Roles: Team Lead, Developer, Integration","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":"* Responsibilities: Model","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"choiwab"},"content":"### Jae Choi","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"choiwab"},"content":"\u003cimg src\u003d\"images/choiwab.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":"[[github](http://github.com/choiwab)] ","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":"[[portfolio](team/choiwab.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":"* Roles: Developer, Code quality","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":"* Responsibilities: Storage","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"rxchell"},"content":"### Rachel Tai","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"rxchell"},"content":"\u003cimg src\u003d\"images/rxchell.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"rxchell"},"content":"[[github](https://github.com/rxchell)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"rxchell"},"content":"[[portfolio](team/rxchell.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":"* Roles: Developer, Documentation","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"rxchell"},"content":"* Responsibilities: Commons","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":"### Jo An","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":"\u003cimg src\u003d\"images/jayjay19630.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":"[[github](https://github.com/jayjay19630)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":"[[email](mailto:jo.an@u.nus.edu)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":"[[portfolio](team/jayjay19630.md)]","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":"* Roles: Developer, Deliverables and Deadlines, Scheduling and Tracking","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Responsibilities: UI","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"Vangmay":3,"jayjay19630":16,"rxchell":5,"choiwab":2,"zaidansani":6,"-":32}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"rxchell"},"content":"* General Practitioners (GPs) at small clinics","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"rxchell"},"content":"**Value proposition**: Time spent looking through paper medical documents should be spent in other life-saving activities. Our product resolves this issue by creating fast access to patient contact details as well as their relevant appointment/treatment details, allowing GPs to contact and monitor their patients easily.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"rxchell"},"content":"|----------|----------------------|----------------------------------------------------|----------------------------------------------------------------------|","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"rxchell"},"content":"| `* * *` | doctor | add appointments | find them in the future for reference |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"rxchell"},"content":"| `* * *` | doctor | schedule a new patient appointment | ensure that the patient is properly booked for consultation |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"rxchell"},"content":"| `* * *` | doctor | remove an appointment that is no longer needed | free up time slots for other patients and avoid scheduling conflicts |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"rxchell"},"content":"| `* * *` | doctor | view all upcoming appointments for better planning | organize my day effectively and ensure no appointments are missed |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"rxchell"},"content":"| `* * *` | administrative staff | manage patient contact information | easily communicate with patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"rxchell"},"content":"| `* * *` | administrative staff | update patient details | maintain accurate records |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"rxchell"},"content":"| `* * *` | administrative staff | get details on a specific patient\u0027s appointments | keep track of the patient |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"rxchell"},"content":"| `* * *` | administrative staff | store all patients information | retrieve them in the future |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"rxchell"},"content":"| `* * *` | nurse | track appointments | get ready to serve patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | access appointment history | understand patient visit patterns |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | categorize patients by conditions or treatments | easily track patient groups |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | find free slots in the appointments | find gaps for appointments or holidays |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"rxchell"},"content":"| `* *` | administrative staff | get details on appointments for the day | keep track of the day\u0027s appointments |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | shift appointments to a different time | change appointments based on holidays, etc. |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"rxchell"},"content":"| `* *` | administrative staff | schedule follow-up appointments | keep track of patients\u0027 appointments |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | add mood status to appointment details | keep track of patient health each time we meet |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | sort patients by closest future appointment date | see which patient to see next |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | find duplicate errors within the system | not have erroneous appointments |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | organize appointments | arrange my schedule accordingly |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"rxchell"},"content":"| `* *` | doctor | set holidays/free days | disallow appointments during certain dates |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"rxchell"},"content":"| `* * ` | doctor | categorise patients based on certain factors | easily track patients with certain statuses |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"rxchell"},"content":"| `* * ` | doctor | add list of allergies for a certain patient | not prescribe them stuff that will kill them |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | view patient\u0027s medical history | make informed treatment decisions |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | access test results for patients | review and discuss results with patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | set reminders for specific patient actions | ensure follow-up on important tasks |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | retrieve medical certificates of patients | gather patient information quickly |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | record the medications given to patients | keep track of personal medication records of patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"rxchell"},"content":"| `*` | administrative staff | search for patient files by name or ID | quickly retrieve specific records |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"rxchell"},"content":"| `*` | administrative staff | check prescription assigned by the doctor | print out prescription for patient |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | search up medicine to prescribe | give prescription to patient |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | add notes to patient files | reference them during future visits |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | change the time frame for receiving reminders | receive reminders more frequently or less frequently |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | add guardian/parental contacts to patient | contact patient indirectly |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | update patient status | keep track of patient\u0027s condition |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | copy treatments | duplicate medication plans for similar patients |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | receive reminders on upcoming appointments | prepare for them |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | retrieve specific treatment information | treat them appropriately |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"rxchell"},"content":"| `*` | doctor | generate an automated document for a patient | give it to them as reference |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"jayjay19630"},"content":"(For all use cases below, the **System** is the `DocTrack` application and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"jayjay19630"},"content":"**Use case: Update a patient**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"jayjay19630"},"content":"3. User requests to update a specific patient in the list with new details","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack updates the patient.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"jayjay19630"},"content":"* 3b. The new patient details are invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"jayjay19630"},"content":" * 3b1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"jayjay19630"},"content":"**Use case: Delete a patient**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"jayjay19630"},"content":"3. User requests to delete a specific patient in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack deletes the patient.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"jayjay19630"},"content":"**Use case: Find appointments for a specific patient**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"jayjay19630"},"content":"3. User requests to list appoinments for a specific patient in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack shows a list of appointments for that patient.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"jayjay19630"},"content":"**Use case: Add an appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of patients.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"jayjay19630"},"content":"3. User requests to add an appoinment for a specific patient in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack adds appointment.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"jayjay19630"},"content":"* 3b. The appointment details are invalid (i.e. wrongly formatted or overlap with existing appointment)","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"jayjay19630"},"content":" * 3b1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"jayjay19630"},"content":"**Use case: Duplicate an appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"jayjay19630"},"content":"3. User requests to duplicate a specific appointment in the list on a new date.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack duplicates appointment.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"jayjay19630"},"content":"* 3b. The appointment details are invalid (i.e. wrongly formatted or overlap with existing appointment)","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"jayjay19630"},"content":" * 3b1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"jayjay19630"},"content":"**Use case: Update an appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"jayjay19630"},"content":"3. User requests to update a specific appointment in the list with new details","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack updates the appointment.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"jayjay19630"},"content":"* 3b. The new details are invalid (i.e. wrongly formatted).","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"jayjay19630"},"content":" * 3b1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"jayjay19630"},"content":"**Use case: Delete an appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"jayjay19630"},"content":"3. User requests to delete a specific appointment in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack deletes the appointment.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"jayjay19630"},"content":"**Use case: Find patient for a specific appointment**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"jayjay19630"},"content":"**MSS**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"jayjay19630"},"content":"1. User requests to list appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"jayjay19630"},"content":"2. DocTrack shows a list of appointments.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"jayjay19630"},"content":"3. User requests to find patient for a specific appointment in the list.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"jayjay19630"},"content":"4. DocTrack shows patient details.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"jayjay19630"},"content":"**Extensions**","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"jayjay19630"},"content":"* 2a. The list is empty.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"jayjay19630"},"content":" Use case ends.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"jayjay19630"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"jayjay19630"},"content":" * 3a1. DocTrack shows an error message.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"jayjay19630"},"content":" Use case resumes at step 2.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"zaidansani"},"content":"2. Should work on any _reasonable system_ with good performance: common operation such as retrieving patient data must complete within 1 second, and complex operations must complete within 3 seconds.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":543,"author":{"gitId":"-"},"content":"2. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":544,"author":{"gitId":"-"},"content":"3. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"zaidansani"},"content":"4. Should not require installation","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"zaidansani"},"content":"5. Must not operate with dependency on any remote server","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"zaidansani"},"content":"6. No usage of DBMS","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"zaidansani"},"content":"7. Main product file must not exceed 100MB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"zaidansani"},"content":"8. Documentation must not exceed 15MB","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"zaidansani"},"content":"9. Product should be designed for typing-preferred consumers, offering a CLI experience","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"zaidansani"},"content":"10. Product should be designed for a single user.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"zaidansani"},"content":"11. Product must function correctly on _standard resolutions_ and support scaling of 100%, 125%, 150%.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"zaidansani"},"content":"12. Data must be persistent, with all changes saved immediately to local storage","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"zaidansani"},"content":"13. Data files must be in a format that can be edited manually by advanced users","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"zaidansani"},"content":"14. Data file must remain usable and intact even with invalid input from the application","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"zaidansani"},"content":"15. Errors must trigger clear, user-friendly messages","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"-"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"zaidansani"},"content":"* **Reasonable system**: A system with an OS matching the criteria above, with parts with a release date maximum 10 years from the current date","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"zaidansani"},"content":"* **Standard resolutions**: 1920x1080 and 1080x720","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":584,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":588,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":596,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":602,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":607,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":610,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"rxchell":41,"jayjay19630":156,"zaidansani":15,"-":406}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"rxchell"},"content":"# DocTrack","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W10-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-W10-2/tp/actions)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"[![Codecov](https://codecov.io/gh/AY2425S1-CS2103T-W10-2/tp/graph/badge.svg?token\u003d134QRO3UI3)](https://codecov.io/gh/AY2425S1-CS2103T-W10-2/tp)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":"**DocTrack is a desktop application for general practitioners (GPs) to quickly access patient contact ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"rxchell"},"content":"details, appointments, and treatment records.** While it has a GUI, most of the user ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"rxchell"},"content":"interactions happen using a CLI (Command Line Interface).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"rxchell"},"content":"* If you are interested in using DocTrack, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"rxchell"},"content":"* If you are interested about developing DocTrack, the [**Developer Guide**](DeveloperGuide.html) is a good ","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":" place to start.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"**Acknowledgements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"rxchell":9,"-":15}},{"path":"docs/team/choiwab.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"choiwab"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"choiwab"},"content":" layout: default.md","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"choiwab"},"content":" title: \"Jae\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"choiwab"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"choiwab"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"jayjay19630":4,"choiwab":8}},{"path":"docs/team/jayjay19630.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":" layout: default.md","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":" title: \"Jo An\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"jayjay19630":12}},{"path":"docs/team/rxchell.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"rxchell"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"rxchell"},"content":" layout: default.md","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"rxchell"},"content":" title: \"Rachel\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"rxchell"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"rxchell"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"rxchell"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"rxchell":12}},{"path":"docs/team/vangmay.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Vangmay"},"content":" title: \"Vangmay\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Vangmay"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Vangmay"},"content":"Given below are my contributions to the project:","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"Vangmay":3,"jayjay19630":2,"-":7}},{"path":"docs/team/zaidansani.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"zaidansani"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zaidansani"},"content":" layout: default.md","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":" title: \"Zaidan\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zaidansani"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zaidansani"},"content":"### Project: DocTrack","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"**DocTrack** helps general practitioners (GPs) at small clinics quickly access patient contact details, appointments, and treatment records. It is optimized for users who prefer a command-line interface (CLI), enabling faster completion of frequent tasks through typed commands.","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"---","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-09-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zaidansani"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-27","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"zaidansani":9}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.ReadOnlyAppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing AddressBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" ReadOnlyAddressBook initialPersonsData;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":" ReadOnlyAppointmentBook initialAppointmentData \u003d null;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":" initialPersonsData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":" initialPersonsData \u003d new AddressBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jayjay19630"},"content":" //TODO: Read appointment book and add data to model manager here.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":" return new ModelManager(initialPersonsData, initialAppointmentData, userPrefs);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping AddressBook ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":7,"-":181}},{"path":"src/main/java/seedu/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.Prefix;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX \u003d \"The person index provided is invalid\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String MESSAGE_PERSONS_LISTED_OVERVIEW \u003d \"%1$d persons listed!\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Formats the {@code person} for display to the user.","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" public static String formatPerson(Person person) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" builder.append(person.getName())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" .append(\"; Phone: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .append(person.getPhone())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" .append(\"; Email: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .append(person.getEmail())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Address: \")","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" .append(person.getAddress())","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" person.getTags().forEach(builder::append);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"jayjay19630":1,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":" * Adds an entity (person or appointment) to the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"public abstract class AddCommand extends Command {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" + \": Adds an entity (person or appointment) to the address book. \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" + \"ENTITY_TYPE \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" + \"ENTITY_ARGUMENTS...\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" + \"Example: \" + COMMAND_WORD + \" person \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" if (alreadyExists(model)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" throw new CommandException(getDuplicateEntityMessage());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" addEntity(model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" return new CommandResult(String.format(getSuccessMessage(), formatEntity()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" * Checks if the entity being added to model already exists.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" protected abstract boolean alreadyExists(Model model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" * Adds the entity to the model.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" protected abstract void addEntity(Model model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" * Returns success message to display upon adding entity.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" protected abstract String getSuccessMessage();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" * Returns the message to display when there is a duplicate.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" protected abstract String getDuplicateEntityMessage();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":" * Formats the entity for displaying in the success message.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" protected abstract String formatEntity();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"jayjay19630":32,"-":36}},{"path":"src/main/java/seedu/address/logic/commands/AddPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" * Adds a person to the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":"public class AddPersonCommand extends AddCommand {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \" \" + \"person\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":" + \": Adds a person to the address book. \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" + \"Parameters: \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + \"person\" + \" \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" private final Person toAdd;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" * Creates an AddPersonCommand to add the specified {@code Person}","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" public AddPersonCommand(Person person) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(person);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" toAdd \u003d person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" protected boolean alreadyExists(Model model) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" return model.hasPerson(toAdd);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" protected void addEntity(Model model) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" protected String getSuccessMessage() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" return MESSAGE_SUCCESS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":" protected String getDuplicateEntityMessage() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" return MESSAGE_DUPLICATE_PERSON;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jayjay19630"},"content":" protected String formatEntity() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jayjay19630"},"content":" return Messages.formatPerson(toAdd);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jayjay19630"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jayjay19630"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":" if (!(other instanceof AddPersonCommand)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" return false;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand otherAddPersonCommand \u003d (AddPersonCommand) other;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" return toAdd.equals(otherAddPersonCommand.toAdd);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" public String toString() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jayjay19630"},"content":" .toString();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":95}},{"path":"src/main/java/seedu/address/logic/commands/ClearCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zaidansani"},"content":" * Clears the model - person, or appointment.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zaidansani"},"content":"public abstract class ClearCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"clear\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zaidansani"},"content":" public static final String MESSAGE_USAGE \u003d \"clear person OR clear appt\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zaidansani"},"content":" clearEntity(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zaidansani"},"content":" return new CommandResult(getSuccessMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zaidansani"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zaidansani"},"content":" * Clears a specified model.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zaidansani"},"content":" protected abstract void clearEntity(Model model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zaidansani"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zaidansani"},"content":" * Returns success message to display upon adding entity.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zaidansani"},"content":" protected abstract String getSuccessMessage();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"zaidansani":15,"-":16}},{"path":"src/main/java/seedu/address/logic/commands/ClearPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zaidansani"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zaidansani"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zaidansani"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zaidansani"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zaidansani"},"content":" * Clears the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zaidansani"},"content":"public class ClearPersonCommand extends ClearCommand {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zaidansani"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Address book has been cleared!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zaidansani"},"content":" protected void clearEntity(Model model) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zaidansani"},"content":" model.setAddressBook(new AddressBook());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zaidansani"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zaidansani"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zaidansani"},"content":" * Returns success message to display upon adding entity.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zaidansani"},"content":" protected String getSuccessMessage() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zaidansani"},"content":" return MESSAGE_SUCCESS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zaidansani"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zaidansani"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"zaidansani":23}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":" * Deletes an entity identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"public abstract class DeleteCommand extends Command {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":" + \": Deletes the entity identified by the index number used in the displayed list.\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + \"person\" + \" \" + \"1\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" protected final Index targetIndex;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" * @param targetIndex Index of entity to be deleted.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" List\u003c?\u003e lastShownList \u003d getFilteredList(model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" throw new CommandException(getInvalidIndexMessage());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" Object entityToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" deleteEntity(model, entityToDelete);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" return new CommandResult(String.format(getSuccessMessage(), formatEntity(entityToDelete)));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" * Gets the filtered list of entities in the model.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" protected abstract List\u003c?\u003e getFilteredList(Model model);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" * Deletes the entity from the model.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" protected abstract void deleteEntity(Model model, Object entity) throws CommandException;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" * Returns the success message to display upon deleting entity.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" protected abstract String getSuccessMessage();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" * Returns the invalid index message when the index is out of bounds.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" protected abstract String getInvalidIndexMessage();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" * Formats the entity for displaying in the success message.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" protected abstract String formatEntity(Object entity);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":38,"-":32}},{"path":"src/main/java/seedu/address/logic/commands/DeletePersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":"public class DeletePersonCommand extends DeleteCommand {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + \"person\" + \" \" + \"1\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zaidansani"},"content":" public DeletePersonCommand(Index targetIndex) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" super(targetIndex);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" protected List\u003cPerson\u003e getFilteredList(Model model) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" protected void deleteEntity(Model model, Object entity) throws CommandException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(entity);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" assert entity instanceof Person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" model.deletePerson((Person) entity);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" protected String getSuccessMessage() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" return MESSAGE_DELETE_PERSON_SUCCESS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" protected String getInvalidIndexMessage() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" return Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" protected String formatEntity(Object entity) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" assert entity instanceof Person;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" return Messages.formatPerson((Person) entity);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zaidansani"},"content":" if (!(other instanceof DeletePersonCommand)) {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand otherDeletePersonCommand \u003d (DeletePersonCommand) other;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"zaidansani"},"content":" return targetIndex.equals(otherDeletePersonCommand.targetIndex);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"jayjay19630":28,"zaidansani":4,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"choiwab"},"content":" * Edits the details of an existing entity (person or appointment) in the address book.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"choiwab"},"content":"public abstract class EditCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"choiwab"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"choiwab"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"choiwab"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"choiwab"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"choiwab"},"content":" + \": Edits the details of an entity (person or appointment) identified \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"choiwab"},"content":" + \"ENTITY_TYPE \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"choiwab"},"content":" + \"INDEX\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"choiwab"},"content":" + \"ENTITY_ARGUMENTS...\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"choiwab"},"content":" + \"Example: \" + COMMAND_WORD + \" \" + \"person\" + \" \" + \"1\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"choiwab"},"content":" protected final Index targetIndex;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"choiwab"},"content":" protected final EditEntityDescriptor editEntityDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"choiwab"},"content":" * @param targetIndex Index of entity to be edited.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"choiwab"},"content":" public EditCommand(Index targetIndex, EditEntityDescriptor editEntityDescriptor) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"choiwab"},"content":" requireNonNull(targetIndex);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"choiwab"},"content":" requireNonNull(editEntityDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"choiwab"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"choiwab"},"content":" this.editEntityDescriptor \u003d editEntityDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"choiwab"},"content":" List\u003c?\u003e lastShownList \u003d getFilteredList(model);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"choiwab"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"choiwab"},"content":" throw new CommandException(getInvalidIndexMessage());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"choiwab"},"content":" Object entityToEdit \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"choiwab"},"content":" Object editedEntity \u003d createEditedEntity(model, entityToEdit, editEntityDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"choiwab"},"content":" if (isSameEntity(model, editedEntity, entityToEdit) \u0026\u0026 hasEntity(model, editedEntity)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"choiwab"},"content":" throw new CommandException(getDuplicateMessage());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"choiwab"},"content":" editEntity(model, editedEntity, entityToEdit);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"choiwab"},"content":" return new CommandResult(String.format(getSuccessMessage(), formatEntity(editedEntity)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"choiwab"},"content":" /*","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"choiwab"},"content":" * Checks if entity already exists in list","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"choiwab"},"content":" protected abstract boolean hasEntity(Model model, Object entity) throws CommandException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"choiwab"},"content":" /*","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"choiwab"},"content":" * Checks if entity to edit is the same as edited entity","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"choiwab"},"content":" protected abstract boolean isSameEntity(Model model, Object editedEntity, Object entityToEdit)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"choiwab"},"content":" throws CommandException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"choiwab"},"content":" * Gets the filtered list of entities in the model.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"choiwab"},"content":" protected abstract List\u003c?\u003e getFilteredList(Model model);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"choiwab"},"content":" /*","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"choiwab"},"content":" * Edits Entity","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"choiwab"},"content":" protected abstract void editEntity(Model model, Object editedEntity, Object entityToEdit) throws CommandException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"choiwab"},"content":" /*","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"choiwab"},"content":" * Adds the entity to the model.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"choiwab"},"content":" protected abstract Object createEditedEntity(Model model, Object entityToEdit,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"choiwab"},"content":" EditEntityDescriptor editEntityDescriptor) throws CommandException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"choiwab"},"content":" /*","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"choiwab"},"content":" * Returns success message to display upon adding entity.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"choiwab"},"content":" protected abstract String getSuccessMessage();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"choiwab"},"content":" /*","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"choiwab"},"content":" * Returns duplicate message to display upon adding entity.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"choiwab"},"content":" protected abstract String getDuplicateMessage();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"choiwab"},"content":" * Returns the invalid index message when the index is out of bounds.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"choiwab"},"content":" protected abstract String getInvalidIndexMessage();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"choiwab"},"content":" * Formats the entity for displaying in the success message.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"choiwab"},"content":" protected abstract String formatEntity(Object entity);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"choiwab"},"content":" return targetIndex.equals(otherEditCommand.targetIndex)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"choiwab"},"content":" \u0026\u0026 editEntityDescriptor.equals(otherEditCommand.editEntityDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"choiwab"},"content":" * Abstract descriptor for editing entities.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"choiwab"},"content":" public abstract static class EditEntityDescriptor {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"choiwab"},"content":" // This class can have common fields or methods for all entities.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"choiwab"},"content":" public EditEntityDescriptor() {}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"choiwab"},"content":" public EditEntityDescriptor(EditEntityDescriptor toCopy) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"choiwab"},"content":" // Copy logic for common fields, if any, can go here.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"choiwab"},"content":" public abstract boolean equals(Object other);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"choiwab":68,"-":95}},{"path":"src/main/java/seedu/address/logic/commands/EditPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"choiwab"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"choiwab"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"choiwab"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"choiwab"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"choiwab"},"content":"import java.util.List;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"choiwab"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"choiwab"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"choiwab"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"choiwab"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"choiwab"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"choiwab"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"choiwab"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"choiwab"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"choiwab"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"choiwab"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"choiwab"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"choiwab"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"choiwab"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"choiwab"},"content":"/**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"choiwab"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"choiwab"},"content":"public class EditPersonCommand extends EditCommand {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"choiwab"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"choiwab"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"choiwab"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"choiwab"},"content":" * Creates an EditPersonCommand to add the specified {@code Person}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"choiwab"},"content":" public EditPersonCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"choiwab"},"content":" super(index, editPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"choiwab"},"content":" protected boolean hasEntity(Model model, Object entity) throws CommandException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"choiwab"},"content":" return model.hasPerson((Person) entity);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"choiwab"},"content":" protected boolean isSameEntity(Model model, Object editedEntity, Object entityToEdit)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"choiwab"},"content":" throws CommandException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"choiwab"},"content":" Person entityToEditCasted \u003d (Person) entityToEdit;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"choiwab"},"content":" return !(entityToEditCasted.isSamePerson((Person) editedEntity));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"choiwab"},"content":" protected List\u003cPerson\u003e getFilteredList(Model model) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"choiwab"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"choiwab"},"content":" protected void editEntity(Model model, Object editedPerson, Object personToEdit) throws CommandException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"choiwab"},"content":" model.setPerson((Person) personToEdit, (Person) editedPerson);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"choiwab"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"choiwab"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"choiwab"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"choiwab"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"choiwab"},"content":" protected Object createEditedEntity(Model model, Object personToEdit,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"choiwab"},"content":" EditEntityDescriptor editPersonDescriptor) throws CommandException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"choiwab"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"choiwab"},"content":" EditPersonDescriptor editPersonDescriptorCasted \u003d (EditPersonDescriptor) editPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"choiwab"},"content":" Person personToEditCasted \u003d (Person) personToEdit;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"choiwab"},"content":" Name updatedName \u003d editPersonDescriptorCasted.getName().orElse(personToEditCasted.getName());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"choiwab"},"content":" Phone updatedPhone \u003d editPersonDescriptorCasted.getPhone().orElse(personToEditCasted.getPhone());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"choiwab"},"content":" Email updatedEmail \u003d editPersonDescriptorCasted.getEmail().orElse(personToEditCasted.getEmail());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"choiwab"},"content":" Address updatedAddress \u003d editPersonDescriptorCasted.getAddress().orElse(personToEditCasted.getAddress());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"choiwab"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptorCasted.getTags().orElse(personToEditCasted.getTags());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"choiwab"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"choiwab"},"content":" protected String getSuccessMessage() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"choiwab"},"content":" return MESSAGE_EDIT_PERSON_SUCCESS;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"choiwab"},"content":" protected String getDuplicateMessage() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"choiwab"},"content":" return MESSAGE_DUPLICATE_PERSON;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"choiwab"},"content":" protected String getInvalidIndexMessage() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"choiwab"},"content":" return Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"choiwab"},"content":" protected String formatEntity(Object entity) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"choiwab"},"content":" assert entity instanceof Person;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"choiwab"},"content":" return Messages.formatPerson((Person) entity);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"choiwab"},"content":" public String toString() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"choiwab"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"choiwab"},"content":" .add(\"index\", targetIndex)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"choiwab"},"content":" .add(\"editPersonDescriptor\", editEntityDescriptor)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"choiwab"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"choiwab"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"choiwab"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"choiwab"},"content":" * corresponding field value of the person.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"choiwab"},"content":" public static class EditPersonDescriptor extends EditCommand.EditEntityDescriptor {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"choiwab"},"content":" private Name name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"choiwab"},"content":" private Phone phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"choiwab"},"content":" private Email email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"choiwab"},"content":" private Address address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"choiwab"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"choiwab"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"choiwab"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"choiwab"},"content":" * Copy constructor.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"choiwab"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"choiwab"},"content":" super(toCopy);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"choiwab"},"content":" setName(toCopy.name);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"choiwab"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"choiwab"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"choiwab"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"choiwab"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"choiwab"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"choiwab"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"choiwab"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"choiwab"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"choiwab"},"content":" public void setName(Name name) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"choiwab"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"choiwab"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"choiwab"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"choiwab"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"choiwab"},"content":" this.phone \u003d phone;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"choiwab"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"choiwab"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"choiwab"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"choiwab"},"content":" this.email \u003d email;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"choiwab"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"choiwab"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"choiwab"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"choiwab"},"content":" this.address \u003d address;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"choiwab"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"choiwab"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"choiwab"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"choiwab"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"choiwab"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"choiwab"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"choiwab"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"choiwab"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"choiwab"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"choiwab"},"content":" * if modification is attempted.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"choiwab"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"choiwab"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"choiwab"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"choiwab"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"choiwab"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"choiwab"},"content":" return true;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"choiwab"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"choiwab"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"choiwab"},"content":" return false;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"choiwab"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"choiwab"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"choiwab"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"choiwab"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"choiwab"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"choiwab"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"choiwab"},"content":" @Override","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"choiwab"},"content":" public String toString() {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"choiwab"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"choiwab"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"choiwab"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"choiwab"},"content":" .add(\"email\", email)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"choiwab"},"content":" .add(\"address\", address)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"choiwab"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"choiwab"},"content":" .toString();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"choiwab"},"content":"}","lastModifiedDate":"2024-10-11","isFullCredit":false}],"authorContributionMap":{"choiwab":222}},{"path":"src/main/java/seedu/address/logic/commands/FindCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Vangmay"},"content":" * Finds and lists all persons or appointments in address book whose name contains any of the argument keywords.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Keyword matching is case insensitive.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Vangmay"},"content":"public abstract class FindCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Vangmay"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Vangmay"},"content":" + \": Finds all persons or appointments whose names contain any of \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Vangmay"},"content":" protected final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public FindCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Vangmay"},"content":" findEntity(model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Vangmay"},"content":" return new CommandResult(getSuccessMessage(model));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!(other instanceof FindCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" FindCommand otherFindCommand \u003d (FindCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return predicate.equals(otherFindCommand.predicate);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"Vangmay"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"Vangmay"},"content":" * Finds the person/appointment from the list","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"Vangmay"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"Vangmay"},"content":" protected abstract void findEntity(Model model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"Vangmay"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"Vangmay"},"content":" * Returns the message to be displayed after finding all persons or appointments matching the query.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"Vangmay"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"Vangmay"},"content":" * @return Success message","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Vangmay"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"Vangmay"},"content":" protected abstract String getSuccessMessage(Model model);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"Vangmay":20,"-":50}},{"path":"src/main/java/seedu/address/logic/commands/FindPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"Vangmay"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"Vangmay"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Vangmay"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Vangmay"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"Vangmay"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"Vangmay"},"content":" * Finds the person from the list of patients","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"Vangmay"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Vangmay"},"content":"public class FindPersonCommand extends FindCommand {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"Vangmay"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Person has been found\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"Vangmay"},"content":" public FindPersonCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"Vangmay"},"content":" super(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"Vangmay"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"Vangmay"},"content":" * Finds all persons with names matching the predicate in the address book to the user.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"Vangmay"},"content":" * @param model {@code Model} which the FindPersonCommand should operate on.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"Vangmay"},"content":" * */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"Vangmay"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Vangmay"},"content":" protected void findEntity(Model model) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Vangmay"},"content":" model.updateFilteredPersonList(this.predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"Vangmay"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"Vangmay"},"content":" * Returns the message to be displayed after finding the person.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Vangmay"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Vangmay"},"content":" * @return the message to be displayed after finding all persons.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"Vangmay"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"Vangmay"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Vangmay"},"content":" public String getSuccessMessage(Model model) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"Vangmay"},"content":" return String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"Vangmay"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"Vangmay":35}},{"path":"src/main/java/seedu/address/logic/commands/ListCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":" * Lists all persons or appointments in the address book to the user.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"public abstract class ListCommand extends Command {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":" public static final String MESSAGE_USAGE \u003d \"list person OR list appt\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"rxchell"},"content":" listEntity(model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":" return new CommandResult(getSuccessMessage());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"rxchell"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"rxchell"},"content":" * Lists everything in the model (person or appointment).","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"rxchell"},"content":" protected abstract void listEntity(Model model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"rxchell"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"rxchell"},"content":" * Returns the message to be displayed after listing all persons or appointments.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"rxchell"},"content":" protected abstract String getSuccessMessage();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"rxchell":15,"-":16}},{"path":"src/main/java/seedu/address/logic/commands/ListPersonCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rxchell"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"rxchell"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"rxchell"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"rxchell"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":" * Lists all persons in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"public class ListPersonCommand extends ListCommand {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"rxchell"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all persons!\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"rxchell"},"content":" * Lists all persons in the address book to the user.*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"rxchell"},"content":" * @param model {@code Model} which the ListPersonCommand should operate on.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"rxchell"},"content":" * */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"rxchell"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"rxchell"},"content":" protected void listEntity(Model model) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"rxchell"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"rxchell"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":" * Returns the message to be displayed after listing all persons.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"rxchell"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"rxchell"},"content":" * @return the message to be displayed after listing all persons.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"rxchell"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"rxchell"},"content":" protected String getSuccessMessage() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"rxchell"},"content":" return MESSAGE_SUCCESS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"rxchell"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"rxchell":32}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.commands.AddPersonCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" String entityType \u003d argMultimap.getEntityType();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddPersonCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person person \u003d new Person(name, phone, email, address, tagList);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" return new AddPersonCommand(person);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" //TODO: Instantiate and return AddAppointmentCommand","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" default:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"jayjay19630":14,"-":57}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"zaidansani"},"content":" return new ClearCommandParser().parse(arguments);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"rxchell"},"content":" return new ListCommandParser().parse(arguments);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"rxchell":1,"zaidansani":2,"-":84}},{"path":"src/main/java/seedu/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" public String getEntityType() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" return getPreamble().split(\" \")[0];","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":7,"-":78}},{"path":"src/main/java/seedu/address/logic/parser/ClearCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"zaidansani"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"zaidansani"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"zaidansani"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"zaidansani"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.commands.ClearPersonCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"zaidansani"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zaidansani"},"content":" * Parses input arguments and creates a new ClearCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"zaidansani"},"content":"public class ClearCommandParser implements Parser\u003cClearCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"zaidansani"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"zaidansani"},"content":" * Parses the given {@code String} of arguments in the context of the ClearCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"zaidansani"},"content":" * and returns a ClearCommand object for execution.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zaidansani"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"zaidansani"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zaidansani"},"content":" public ClearCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"zaidansani"},"content":" String entityType \u003d args.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"zaidansani"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"zaidansani"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"zaidansani"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zaidansani"},"content":" return new ClearPersonCommand();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"zaidansani"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"zaidansani"},"content":" //TODO: Instantiate and return ClearAppointmentCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zaidansani"},"content":" default:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"zaidansani"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"zaidansani"},"content":" ClearCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zaidansani"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"zaidansani"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"zaidansani"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"zaidansani":35}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":" public static final Prefix PREFIX_APPOINTMENT_TYPE \u003d new Prefix(\"t/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" public static final Prefix PREFIX_MEDICINE \u003d new Prefix(\"m/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" public static final Prefix PREFIX_SICKNESS \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"-":15}},{"path":"src/main/java/seedu/address/logic/parser/DeleteCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new DeleteCommand object","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class DeleteCommandParser implements Parser\u003cDeleteCommand\u003e {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteCommand","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * and returns a DeleteCommand object for execution.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public DeleteCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" String[] splitArgs \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" if (splitArgs.length !\u003d 2) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" String entityType \u003d splitArgs[0];","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" String indexString \u003d splitArgs[1];","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" try {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" Index index \u003d ParserUtil.parseIndex(indexString);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" return new DeletePersonCommand(index);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeletePersonCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" //TODO: Instantiate and return DeleteAppointmentCommand","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" default:","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":26,"-":23}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"choiwab"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"choiwab"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"choiwab"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand.EditPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"choiwab"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"choiwab"},"content":" String[] splitArgs \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"choiwab"},"content":" if (splitArgs.length \u003c 3) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"choiwab"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"choiwab"},"content":" String entityType \u003d splitArgs[0];","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"choiwab"},"content":" String indexString \u003d splitArgs[1];","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"choiwab"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"choiwab"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"choiwab"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"choiwab"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"choiwab"},"content":" PREFIX_ADDRESS, PREFIX_TAG);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"choiwab"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"choiwab"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"choiwab"},"content":" EditPersonCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"choiwab"},"content":" Index index \u003d ParserUtil.parseIndex(indexString);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"choiwab"},"content":" return new EditPersonCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"choiwab"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"choiwab"},"content":" //TODO","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"choiwab"},"content":" default:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"choiwab"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"choiwab"},"content":" /**","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"choiwab"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"choiwab"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"choiwab"},"content":" */","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"choiwab"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"choiwab"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"choiwab"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"choiwab"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"choiwab":36,"-":78}},{"path":"src/main/java/seedu/address/logic/parser/FindCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"Vangmay"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"Vangmay"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"Vangmay"},"content":"import seedu.address.logic.commands.FindPersonCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new FindCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class FindCommandParser implements Parser\u003cFindCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the FindCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * and returns a FindCommand object for execution.","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"Vangmay"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Vangmay"},"content":" * @param args user input","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Vangmay"},"content":" * @return findCommand object for execution","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public FindCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"Vangmay"},"content":" String entityType \u003d nameKeywords[0];","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"Vangmay"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"Vangmay"},"content":" nameKeywords \u003d Arrays.copyOfRange(nameKeywords, 1, nameKeywords.length);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"Vangmay"},"content":" if (nameKeywords.length \u003d\u003d 0) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"Vangmay"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"Vangmay"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Vangmay"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Vangmay"},"content":" return new FindPersonCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"Vangmay"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"Vangmay"},"content":" //TODO: Instantiate and return FindAppointmentCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"Vangmay"},"content":" default:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"Vangmay"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"Vangmay"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"Vangmay":21,"-":32}},{"path":"src/main/java/seedu/address/logic/parser/ListCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"rxchell"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"rxchell"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"rxchell"},"content":"import static seedu.address.logic.parser.ParserUtil.APPOINTMENT_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"rxchell"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"rxchell"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"rxchell"},"content":"import seedu.address.logic.commands.ListPersonCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"rxchell"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"rxchell"},"content":" * Parses input arguments and creates a new ListCommand object","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"rxchell"},"content":"public class ListCommandParser implements Parser\u003cListCommand\u003e {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"rxchell"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"rxchell"},"content":" * Parses the given {@code String} of arguments for ListCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"rxchell"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"rxchell"},"content":" * @param args user input","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":" * @return ListCommand object for execution","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"rxchell"},"content":" * @throws ParseException if the user input does not follow the expected format","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"rxchell"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"rxchell"},"content":" public ListCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":" String entityType \u003d args.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"rxchell"},"content":" switch (entityType) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"rxchell"},"content":" case PERSON_ENTITY_STRING:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"rxchell"},"content":" return new ListPersonCommand();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"rxchell"},"content":" case APPOINTMENT_ENTITY_STRING:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"rxchell"},"content":" //TODO: Instantiate and return ListAppointmentCommand","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"rxchell"},"content":" default:","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"rxchell"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"rxchell"},"content":" ListCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"rxchell"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"rxchell":36}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"Vangmay"},"content":" public static final String PERSON_ENTITY_STRING \u003d \"person\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"Vangmay"},"content":" public static final String APPOINTMENT_ENTITY_STRING \u003d \"appt\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"Vangmay":2,"-":124}},{"path":"src/main/java/seedu/address/model/AppointmentBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.UniqueAppointmentList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":" * Wraps all data at the appointment-book level","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":" * Duplicates are not allowed (by .isSameAppointment comparison)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"public class AppointmentBook implements ReadOnlyAppointmentBook {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":" private final UniqueAppointmentList appointments;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" * among constructors.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" appointments \u003d new UniqueAppointmentList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBook() {}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" * Creates an AppointmentBook using the Appointments in the {@code toBeCopied}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBook(ReadOnlyAppointmentBook toBeCopied) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" this();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" resetData(toBeCopied);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" //// list overwrite operations","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" * Replaces the contents of the appointment list with {@code appointments}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" * {@code appointments} must not contain duplicate appointments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" this.appointments.setAppointments(appointments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" * Resets the existing data of this {@code AppointmentBook} with {@code newData}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" public void resetData(ReadOnlyAppointmentBook newData) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(newData);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" setAppointments(newData.getAppointmentList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" //// appointment-level operations","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" * Returns true if an appointment with the same identity as {@code appointment} exists in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":" public boolean hasAppointment(Appointment appointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" return appointments.contains(appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jayjay19630"},"content":" * Adds an appointment to the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jayjay19630"},"content":" * The appointment must not already exist in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jayjay19630"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jayjay19630"},"content":" appointments.add(appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jayjay19630"},"content":" * Replaces the given appointment {@code target} in the list with {@code editedAppointment}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" * {@code target} must exist in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":" * The appointment identity of {@code editedAppointment} must not be the same as another","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" * existing appointment in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jayjay19630"},"content":" public void setAppointment(Appointment target, Appointment editedAppointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(editedAppointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":" appointments.setAppointment(target, editedAppointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":" * Removes {@code key} from this {@code AppointmentBook}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":" * {@code key} must exist in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jayjay19630"},"content":" public void removeAppointment(Appointment key) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":" appointments.remove(key);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"jayjay19630"},"content":" //// util methods","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"jayjay19630"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jayjay19630"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"jayjay19630"},"content":" .add(\"appointments\", appointments)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"jayjay19630"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"jayjay19630"},"content":" public ObservableList\u003cAppointment\u003e getAppointmentList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"jayjay19630"},"content":" return appointments.asUnmodifiableObservableList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"jayjay19630"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jayjay19630"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"jayjay19630"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"jayjay19630"},"content":" if (!(other instanceof AppointmentBook)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jayjay19630"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"jayjay19630"},"content":" AppointmentBook otherAppointmentBook \u003d (AppointmentBook) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"jayjay19630"},"content":" return appointments.equals(otherAppointmentBook.appointments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jayjay19630"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"jayjay19630"},"content":" return appointments.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":131}},{"path":"src/main/java/seedu/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" Predicate\u003cPerson\u003e PREDICATE_SHOW_ALL_PERSONS \u003d unused -\u003e true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" Predicate\u003cAppointment\u003e PREDICATE_SHOW_ALL_APPOINTMENTS \u003d unused -\u003e true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * Returns true if a person with the same identity as {@code person} exists in the address book.","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" boolean hasPerson(Person person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Deletes the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * The person must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" void deletePerson(Person target);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Adds the given person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code person} must not already exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" void addPerson(Person person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Replaces the given person {@code target} with {@code editedPerson}.","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * The person identity of {@code editedPerson} must not be the same as another existing person in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" void setPerson(Person target, Person editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /** Returns an unmodifiable view of the filtered person list */","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" ObservableList\u003cPerson\u003e getFilteredPersonList();","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Updates the filter of the filtered person list to filter by the given {@code predicate}.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":" * Replaces appointment book data with the data in {@code appointmentBook}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jayjay19630"},"content":" void setAppointmentBook(ReadOnlyAppointmentBook appointmentBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":" /** Returns the AppointmentBook */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jayjay19630"},"content":" ReadOnlyAppointmentBook getAppointmentBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"jayjay19630"},"content":" * Returns true if an appointment with the same identity as {@code appointment} exists in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"jayjay19630"},"content":" boolean hasAppointment(Appointment appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"jayjay19630"},"content":" * Deletes the given appointment.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"jayjay19630"},"content":" * The appointment must exist in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"jayjay19630"},"content":" void deleteAppointment(Appointment target);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jayjay19630"},"content":" * Adds the given appointment.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"jayjay19630"},"content":" * {@code appointment} must not already exist in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"jayjay19630"},"content":" void addAppointment(Appointment appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"jayjay19630"},"content":" * Replaces the given appointment {@code target} with {@code editedAppointment}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"jayjay19630"},"content":" * {@code target} must exist in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"jayjay19630"},"content":" * The appointment identity of {@code editedAppointment} must not be the same as","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"jayjay19630"},"content":" * another existing appointment in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"jayjay19630"},"content":" void setAppointment(Appointment target, Appointment editedAppointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"jayjay19630"},"content":" /** Returns an unmodifiable view of the filtered appointment list */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"jayjay19630"},"content":" ObservableList\u003cAppointment\u003e getFilteredAppointmentList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jayjay19630"},"content":" * Updates the filter of the filtered appointment list to filter by the given {@code predicate}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jayjay19630"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"jayjay19630"},"content":" void updateFilteredAppointmentList(Predicate\u003cAppointment\u003e predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"jayjay19630":44,"-":87}},{"path":"src/main/java/seedu/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" private final AppointmentBook appointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final FilteredList\u003cPerson\u003e filteredPersons;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" private final FilteredList\u003cAppointment\u003e filteredAppointments;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" public ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" ReadOnlyAddressBook addressBook,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" ReadOnlyAppointmentBook appointmentBook,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" requireAllNonNull(addressBook, appointmentBook, userPrefs);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" logger.fine(\"Initializing with address book: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" + addressBook","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" + \", with appointment book: \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" + appointmentBook","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" + \" and user prefs \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" + userPrefs);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" this.appointmentBook \u003d new AppointmentBook(appointmentBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" filteredPersons \u003d new FilteredList\u003c\u003e(this.addressBook.getPersonList());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" filteredAppointments \u003d new FilteredList\u003c\u003e(this.appointmentBook.getAppointmentList());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" this(new AddressBook(), new AppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" return addressBook.hasPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" addressBook.removePerson(target);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" addressBook.addPerson(person);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" requireAllNonNull(target, editedPerson);","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" addressBook.setPerson(target, editedPerson);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jayjay19630"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AppointmentBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"jayjay19630"},"content":" public void setAppointmentBook(ReadOnlyAppointmentBook appointmentBook) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"jayjay19630"},"content":" this.appointmentBook.resetData(appointmentBook);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"jayjay19630"},"content":" public ReadOnlyAppointmentBook getAppointmentBook() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"jayjay19630"},"content":" return appointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"jayjay19630"},"content":" public boolean hasAppointment(Appointment appointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"jayjay19630"},"content":" return appointmentBook.hasAppointment(appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"jayjay19630"},"content":" public void deleteAppointment(Appointment target) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"jayjay19630"},"content":" appointmentBook.removeAppointment(target);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jayjay19630"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"jayjay19630"},"content":" appointmentBook.addAppointment(appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"jayjay19630"},"content":" updateFilteredAppointmentList(PREDICATE_SHOW_ALL_APPOINTMENTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"jayjay19630"},"content":" public void setAppointment(Appointment target, Appointment editedAppointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"jayjay19630"},"content":" requireAllNonNull(target, editedAppointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"jayjay19630"},"content":" appointmentBook.setAppointment(target, editedAppointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Person List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" return filteredPersons;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" filteredPersons.setPredicate(predicate);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"jayjay19630"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Appointment List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"jayjay19630"},"content":" * Returns an unmodifiable view of the list of {@code Appointment} backed by the internal list of","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"jayjay19630"},"content":" * {@code versionedAppointmentBook}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"jayjay19630"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"jayjay19630"},"content":" return filteredAppointments;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"jayjay19630"},"content":" public void updateFilteredAppointmentList(Predicate\u003cAppointment\u003e predicate) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"jayjay19630"},"content":" filteredAppointments.setPredicate(predicate);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 appointmentBook.equals(otherModelManager.appointmentBook)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 filteredPersons.equals(otherModelManager.filteredPersons)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 filteredAppointments.equals(otherModelManager.filteredAppointments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":75,"-":142}},{"path":"src/main/java/seedu/address/model/ReadOnlyAppointmentBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.model;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":" * Unmodifiable view of an appointment book","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"public interface ReadOnlyAppointmentBook {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":" * Returns an unmodifiable view of the appointments list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":" * This list will not contain any duplicate appointments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":" ObservableList\u003cAppointment\u003e getAppointmentList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":17}},{"path":"src/main/java/seedu/address/model/appointment/Appointment.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.model.appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"public class Appointment {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" // Identity fields","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" private final AppointmentType appointmentType;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":" private final LocalDateTime appointmentDateTime;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":" private final int personId;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":" // Data fields","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" private final Sickness sickness;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" private final Medicine medicine;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" public Appointment(","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" AppointmentType appointmentType,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" LocalDateTime appointmentDateTime,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" int personId,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" Sickness sickness,","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" Medicine medicine) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" requireAllNonNull(appointmentType, personId, sickness, medicine);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" this.appointmentType \u003d appointmentType;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" this.appointmentDateTime \u003d appointmentDateTime;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" this.personId \u003d personId;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" this.sickness \u003d sickness;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" this.medicine \u003d medicine;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" public AppointmentType getAppointmentType() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" return appointmentType;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" public int getPersonId() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" return personId;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" public Sickness getSickness() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" return sickness;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" public LocalDateTime getAppointmentDateTime() {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" return appointmentDateTime;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" public Medicine getMedicine() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" return medicine;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" * Returns true if both appointments have the same name.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":" * This defines a weaker notion of equality between two appointments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" public boolean isSameAppointment(Appointment otherAppointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" if (otherAppointment \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jayjay19630"},"content":" return otherAppointment !\u003d null","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 otherAppointment.getAppointmentType().equals(getAppointmentType())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 otherAppointment.getPersonId() \u003d\u003d getPersonId()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 otherAppointment.getAppointmentDateTime() \u003d\u003d getAppointmentDateTime();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jayjay19630"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jayjay19630"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jayjay19630"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jayjay19630"},"content":" if (!(other instanceof Appointment)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jayjay19630"},"content":" Appointment otherAppointment \u003d (Appointment) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jayjay19630"},"content":" return appointmentType.equals(otherAppointment.appointmentType)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 appointmentDateTime \u003d\u003d otherAppointment.appointmentDateTime","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 personId \u003d\u003d otherAppointment.personId","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 medicine.equals(otherAppointment.medicine)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"jayjay19630"},"content":" \u0026\u0026 sickness.equals(otherAppointment.sickness);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jayjay19630"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"jayjay19630"},"content":" return Objects.hash(appointmentType, appointmentDateTime, personId, medicine, sickness);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"jayjay19630"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"jayjay19630"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"jayjay19630"},"content":" .add(\"appointmentType\", appointmentType)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jayjay19630"},"content":" .add(\"appointmentDateTime\", appointmentDateTime)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"jayjay19630"},"content":" .add(\"personId\", personId)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"jayjay19630"},"content":" .add(\"medicine\", medicine)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"jayjay19630"},"content":" .add(\"sickness\", sickness)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jayjay19630"},"content":" .toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":117}},{"path":"src/main/java/seedu/address/model/appointment/AppointmentType.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.model.appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":" * Represents the type of an Appointment in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidAppointmentType(String)}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"public class AppointmentType {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":" \"Appointment types can take any values, and it should not be blank\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" * The first character of the appointment type must not be a whitespace,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":" public final String value;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" * Constructs an {@code AppointmentType}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" * @param appointmentType A valid appointmentType.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" public AppointmentType(String appointmentType) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(appointmentType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" checkArgument(isValidAppointmentType(appointmentType), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" value \u003d appointmentType;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" * Returns true if a given string is a valid appointment type.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" public static boolean isValidAppointmentType(String test) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" return value;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" if (!(other instanceof AppointmentType)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" AppointmentType otherAppointmentType \u003d (AppointmentType) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" return value.equals(otherAppointmentType.value);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":67}},{"path":"src/main/java/seedu/address/model/appointment/Medicine.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.model.appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":" * Represents an Appointment-related medicine in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidMedicine(String)}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"public class Medicine {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Medicines can take any values, and it should not be blank\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":" * The first character of the medicine must not be a whitespace,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" public final String value;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" * Constructs an {@code Medicine}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" * @param medicine A valid medicine.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" public Medicine(String medicine) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(medicine);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" checkArgument(isValidMedicine(medicine), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" value \u003d medicine;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" * Returns true if a given string is a valid sickness.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" public static boolean isValidMedicine(String test) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" return value;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" if (!(other instanceof Medicine)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" Medicine otherMedicine \u003d (Medicine) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" return value.equals(otherMedicine.value);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":66}},{"path":"src/main/java/seedu/address/model/appointment/Sickness.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.model.appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":" * Represents an Appointment-related sickness in the appointment book.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSickness(String)}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"public class Sickness {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Sicknesses can take any values, and it should not be blank\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":" /*","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":" * The first character of the sickness must not be a whitespace,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":" public static final String VALIDATION_REGEX \u003d \"[^\\\\s].*\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" public final String value;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" * Constructs an {@code Sickness}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" * @param sickness A valid sickness.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" public Sickness(String sickness) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(sickness);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" checkArgument(isValidSickness(sickness), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" value \u003d sickness;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" * Returns true if a given string is a valid sickness.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" public static boolean isValidSickness(String test) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" return value;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" if (!(other instanceof Sickness)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" Sickness otherSickness \u003d (Sickness) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" return value.equals(otherSickness.value);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":66}},{"path":"src/main/java/seedu/address/model/appointment/UniqueAppointmentList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.model.appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.exceptions.AppointmentNotFoundException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.exceptions.DuplicateAppointmentException;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" * A list of appointments that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" * An appointment is considered unique by comparing using {@code Appointment#isSameAppointment(Appointment)}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":" * As such, adding and updating of appointments uses Appointment#isSameAppointment(Appointment) for equality so as","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":" * to ensure that the appointment being added or updated isunique in terms of identity in the UniqueAppointmentList.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" * However, the removal of an appointment uses Appointment#equals(Object) so as to ensure that the appointment with","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":" * exactly the same fields will be removed.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" *","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" * @see Appointment#isSameAppointment(Appointment)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":"public class UniqueAppointmentList implements Iterable\u003cAppointment\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" private final ObservableList\u003cAppointment\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" private final ObservableList\u003cAppointment\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" * Returns true if the list contains an equivalent appointment as the given argument.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" public boolean contains(Appointment toCheck) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" return internalList.stream().anyMatch(toCheck::isSameAppointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" * Adds an appointment to the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" * The appointment must not already exist in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" public void add(Appointment toAdd) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" throw new DuplicateAppointmentException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" * Replaces the appointment {@code target} in the list with {@code editedAppointment}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" * The appointmnet identity of {@code editedAppointment} must not be the same as another","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" * existing appointment in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" public void setAppointment(Appointment target, Appointment editedAppointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" requireAllNonNull(target, editedAppointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" throw new AppointmentNotFoundException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" if (!target.isSameAppointment(editedAppointment) \u0026\u0026 contains(editedAppointment)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" throw new DuplicateAppointmentException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jayjay19630"},"content":" internalList.set(index, editedAppointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jayjay19630"},"content":" * Removes the equivalent appointment from the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jayjay19630"},"content":" * The appointment must exist in the list.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" public void remove(Appointment toRemove) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":" throw new AppointmentNotFoundException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" public void setAppointments(UniqueAppointmentList replacement) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":" * Replaces the contents of this list with {@code appointments}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":" * {@code appointments} must not contain duplicate appointments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jayjay19630"},"content":" public void setAppointments(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":" requireAllNonNull(appointments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jayjay19630"},"content":" if (!appointmentsAreUnique(appointments)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"jayjay19630"},"content":" throw new DuplicateAppointmentException();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"jayjay19630"},"content":" internalList.setAll(appointments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"jayjay19630"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jayjay19630"},"content":" public ObservableList\u003cAppointment\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"jayjay19630"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"jayjay19630"},"content":" public Iterator\u003cAppointment\u003e iterator() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"jayjay19630"},"content":" return internalList.iterator();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"jayjay19630"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"jayjay19630"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"jayjay19630"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"jayjay19630"},"content":" if (!(other instanceof UniqueAppointmentList)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"jayjay19630"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"jayjay19630"},"content":" UniqueAppointmentList otherUniqueAppointmentList \u003d (UniqueAppointmentList) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jayjay19630"},"content":" return internalList.equals(otherUniqueAppointmentList.internalList);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"jayjay19630"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"jayjay19630"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"jayjay19630"},"content":" public String toString() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"jayjay19630"},"content":" return internalList.toString();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"jayjay19630"},"content":" * Returns true if {@code appointments} contains only unique appointments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"jayjay19630"},"content":" private boolean appointmentsAreUnique(List\u003cAppointment\u003e appointments) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"jayjay19630"},"content":" for (int i \u003d 0; i \u003c appointments.size() - 1; i++) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"jayjay19630"},"content":" for (int j \u003d i + 1; j \u003c appointments.size(); j++) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"jayjay19630"},"content":" if (appointments.get(i).isSameAppointment(appointments.get(j))) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"jayjay19630"},"content":" return false;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jayjay19630"},"content":" return true;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":153}},{"path":"src/main/java/seedu/address/model/appointment/exceptions/AppointmentNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.model.appointment.exceptions;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":" * Signals that the operation is unable to find the specified appointment.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"public class AppointmentNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":6}},{"path":"src/main/java/seedu/address/model/appointment/exceptions/DuplicateAppointmentException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.model.appointment.exceptions;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":" * Signals that the operation will result in duplicate Appointments","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":" * (Appointments are considered duplicates if they have the same identity).","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"public class DuplicateAppointmentException extends RuntimeException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":" public DuplicateAppointmentException() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":" super(\"Operation would result in duplicate appointments\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":11}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"rxchell"},"content":" // Static counter to track the number of persons","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"rxchell"},"content":" private static int personIDCounter \u003d 0;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"rxchell"},"content":" // Unique person ID","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"rxchell"},"content":" private final int personId;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" requireAllNonNull(name, phone, email, address, tags);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"rxchell"},"content":" // Increment the static counter and assign a unique ID to the person","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"rxchell"},"content":" this.personId \u003d ++personIDCounter;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"rxchell"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"rxchell"},"content":" public int getPersonId() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"rxchell"},"content":" return personId;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return Objects.hash(name, phone, email, address, tags);","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"rxchell":13,"-":117}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":"import seedu.address.logic.commands.ListPersonCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"zaidansani"},"content":" String deleteCommand \u003d \"delete person 9\";","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"rxchell"},"content":" String listCommand \u003d ListPersonCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"rxchell"},"content":" assertCommandSuccess(listCommand, ListPersonCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jayjay19630"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), model.getAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"jayjay19630"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"rxchell":3,"zaidansani":1,"-":169}},{"path":"src/test/java/seedu/address/logic/commands/AddPersonCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"rxchell"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.testutil.TypicalAppointments.getTypicalAppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"rxchell"},"content":"import java.lang.reflect.Field;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code AddCommand}.","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"rxchell"},"content":"public class AddPersonCommandIntegrationTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), getTypicalAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"rxchell"},"content":" @BeforeEach","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"rxchell"},"content":" public void resetCounter() throws Exception {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"rxchell"},"content":" // Use reflection to reset the personIDCounter","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"rxchell"},"content":" Field personIdCounterField \u003d Person.class.getDeclaredField(\"personIDCounter\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"rxchell"},"content":" personIdCounterField.setAccessible(true);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"rxchell"},"content":" // Reset counter to 0 before each test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"rxchell"},"content":" personIdCounterField.setInt(null, 0);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_newPerson_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), model.getAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" expectedModel.addPerson(validPerson);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"rxchell"},"content":" // Verify personId increments correctly","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"rxchell"},"content":" assertEquals(1, validPerson.getPersonId());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"rxchell"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" assertCommandSuccess(new AddPersonCommand(validPerson), model,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" String.format(AddPersonCommand.MESSAGE_SUCCESS, Messages.formatPerson(validPerson)),","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(0);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" assertCommandFailure(new AddPersonCommand(personInList), model,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"rxchell":16,"jayjay19630":7,"-":43}},{"path":"src/test/java/seedu/address/logic/commands/AddPersonCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.ReadOnlyAppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":"public class AddPersonCommandTest {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddPersonCommand(null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" CommandResult commandResult \u003d new AddPersonCommand(validPerson).execute(modelStub);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" assertEquals(String.format(AddPersonCommand.MESSAGE_SUCCESS, Messages.formatPerson(validPerson)),","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Person validPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addPersonCommand \u003d new AddPersonCommand(validPerson);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addPersonCommand.execute(modelStub));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\").build();","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addAliceCommand \u003d new AddPersonCommand(alice);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addBobCommand \u003d new AddPersonCommand(bob);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addAliceCommandCopy \u003d new AddPersonCommand(alice);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand addPersonCommand \u003d new AddPersonCommand(ALICE);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" String expected \u003d AddPersonCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":" assertEquals(expected, addPersonCommand.toString());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"jayjay19630"},"content":" public void setAppointmentBook(ReadOnlyAppointmentBook appointmentBook) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"jayjay19630"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"jayjay19630"},"content":" public ReadOnlyAppointmentBook getAppointmentBook() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"jayjay19630"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"jayjay19630"},"content":" public boolean hasAppointment(Appointment appointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"jayjay19630"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"jayjay19630"},"content":" public void deleteAppointment(Appointment target) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"jayjay19630"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"jayjay19630"},"content":" public void addAppointment(Appointment appointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"jayjay19630"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"jayjay19630"},"content":" public void setAppointment(Appointment target, Appointment editedAppointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"jayjay19630"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"jayjay19630"},"content":" public ObservableList\u003cAppointment\u003e getFilteredAppointmentList() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"jayjay19630"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"jayjay19630"},"content":" @Override","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"jayjay19630"},"content":" public void updateFilteredAppointmentList(Predicate\u003cAppointment\u003e predicate) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"jayjay19630"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":55,"-":192}},{"path":"src/test/java/seedu/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.testutil.TypicalAppointments.getTypicalAppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"zaidansani"},"content":" assertCommandSuccess(new ClearPersonCommand(), model, ClearPersonCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), getTypicalAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), getTypicalAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"zaidansani"},"content":" assertCommandSuccess(new ClearPersonCommand(), model, ClearPersonCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"zaidansani":2,"-":28}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_APPOINTMENT_TYPE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_MEDICINE;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SICKNESS;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" public static final String PERSON_ENTITY_STRING \u003d \"person \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" public static final String PERSON_APPOINTMENT_STRING \u003d \"appt \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"choiwab"},"content":" public static final EditPersonCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"choiwab"},"content":" public static final EditPersonCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" public static final String VALID_APPOINTMENT_TYPE_AMY \u003d \"Health Checkup\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jayjay19630"},"content":" public static final String VALID_APPOINTMENT_TYPE_BOB \u003d \"Dental Checkup\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" public static final String VALID_MEDICINE_AMY \u003d \"Panadol\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":" public static final String VALID_MEDICINE_BOB \u003d \"Ibuprofen\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" public static final String VALID_SICKNESS_AMY \u003d \"Flu\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jayjay19630"},"content":" public static final String VALID_SICKNESS_BOB \u003d \"Toothache\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" public static final String APPOINTMENT_TYPE_DESC_AMY \u003d \" \" + PREFIX_APPOINTMENT_TYPE + VALID_APPOINTMENT_TYPE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" public static final String APPOINTMENT_TYPE_DESC_BOB \u003d \" \" + PREFIX_APPOINTMENT_TYPE + VALID_APPOINTMENT_TYPE_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":" public static final String MEDICINE_DESC_AMY \u003d \" \" + PREFIX_MEDICINE + VALID_MEDICINE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":" public static final String MEDICINE_DESC_BOB \u003d \" \" + PREFIX_MEDICINE + VALID_MEDICINE_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jayjay19630"},"content":" public static final String SICKNESS_DESC_AMY \u003d \" \" + PREFIX_SICKNESS + VALID_SICKNESS_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" public static final String SICKNESS_DESC_BOB \u003d \" \" + PREFIX_SICKNESS + VALID_SICKNESS_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"jayjay19630":20,"choiwab":2,"-":126}},{"path":"src/test/java/seedu/address/logic/commands/DeletePersonCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.testutil.TypicalAppointments.getTypicalAppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * {@code DeleteCommand}.","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"zaidansani"},"content":"public class DeletePersonCommandTest {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), getTypicalAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"zaidansani"},"content":" String expectedMessage \u003d String.format(DeletePersonCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" Messages.formatPerson(personToDelete));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" ModelManager expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" model.getAddressBook(), getTypicalAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"zaidansani"},"content":" assertCommandSuccess(deletePersonCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"zaidansani"},"content":" assertCommandFailure(deletePersonCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Person personToDelete \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"zaidansani"},"content":" String expectedMessage \u003d String.format(DeletePersonCommand.MESSAGE_DELETE_PERSON_SUCCESS,","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" Messages.formatPerson(personToDelete));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), getTypicalAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" expectedModel.deletePerson(personToDelete);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" showNoPerson(expectedModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"zaidansani"},"content":" assertCommandSuccess(deletePersonCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"zaidansani"},"content":" assertCommandFailure(deletePersonCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deleteFirstCommand \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deleteSecondCommand \u003d new DeletePersonCommand(INDEX_SECOND_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deleteFirstCommandCopy \u003d new DeletePersonCommand(INDEX_FIRST_PERSON);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand deletePersonCommand \u003d new DeletePersonCommand(targetIndex);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"zaidansani"},"content":" String expected \u003d DeletePersonCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"zaidansani"},"content":" assertEquals(expected, deletePersonCommand.toString());","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void showNoPerson(Model model) {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(p -\u003e false);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertTrue(model.getFilteredPersonList().isEmpty());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"jayjay19630":7,"zaidansani":17,"-":98}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.testutil.TypicalAppointments.getTypicalAppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand.EditPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditCommand.","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"choiwab"},"content":"public class EditPersonCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), getTypicalAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder().build();","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(editedPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"choiwab"},"content":" EditCommand editCommand \u003d new EditPersonCommand(INDEX_FIRST_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatPerson(editedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" getTypicalAppointmentBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Index indexLastPerson \u003d Index.fromOneBased(model.getFilteredPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" Person lastPerson \u003d model.getFilteredPersonList().get(indexLastPerson.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" PersonBuilder personInList \u003d new PersonBuilder(lastPerson);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Person editedPerson \u003d personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"choiwab"},"content":" EditCommand editCommand \u003d new EditPersonCommand(indexLastPerson, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jayjay19630"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatPerson(editedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jayjay19630"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jayjay19630"},"content":" new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jayjay19630"},"content":" getTypicalAppointmentBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jayjay19630"},"content":" new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" expectedModel.setPerson(lastPerson, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"choiwab"},"content":" EditCommand editCommand \u003d new EditPersonCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Person editedPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatPerson(editedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":" new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":" getTypicalAppointmentBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jayjay19630"},"content":" new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertCommandSuccess(editCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Person personInFilteredList \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Person editedPerson \u003d new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"choiwab"},"content":" EditCommand editPersonCommand \u003d new EditPersonCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"jayjay19630"},"content":" EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, Messages.formatPerson(editedPerson));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jayjay19630"},"content":" Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"jayjay19630"},"content":" new AddressBook(model.getAddressBook()),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"jayjay19630"},"content":" getTypicalAppointmentBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"jayjay19630"},"content":" new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" expectedModel.setPerson(model.getFilteredPersonList().get(0), editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"choiwab"},"content":" assertCommandSuccess(editPersonCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Person firstPerson \u003d model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(firstPerson).build();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"choiwab"},"content":" EditCommand editCommand \u003d new EditPersonCommand(INDEX_SECOND_PERSON, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" public void execute_duplicatePersonFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" // edit person in filtered list into a duplicate in address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" Person personInList \u003d model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"choiwab"},"content":" EditCommand editCommand \u003d new EditPersonCommand(INDEX_FIRST_PERSON,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder(personInList).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, EditCommand.MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexUnfilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredPersonList().size() + 1);","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"choiwab"},"content":" EditCommand editCommand \u003d new EditPersonCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void execute_invalidPersonIndexFilteredList_failure() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getPersonList().size());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"choiwab"},"content":" EditCommand editCommand \u003d new EditPersonCommand(outOfBoundIndex,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertCommandFailure(editCommand, model, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"choiwab"},"content":" final EditCommand standardCommand \u003d new EditPersonCommand(INDEX_FIRST_PERSON, DESC_AMY);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" EditPersonDescriptor copyDescriptor \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"choiwab"},"content":" EditCommand commandWithSameValues \u003d new EditPersonCommand(INDEX_FIRST_PERSON, copyDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"zaidansani"},"content":" assertFalse(standardCommand.equals(new ClearPersonCommand()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"choiwab"},"content":" assertFalse(standardCommand.equals(new EditPersonCommand(INDEX_SECOND_PERSON, DESC_AMY)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"choiwab"},"content":" assertFalse(standardCommand.equals(new EditPersonCommand(INDEX_FIRST_PERSON, DESC_BOB)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"choiwab"},"content":" EditPersonCommand editPersonCommand \u003d new EditPersonCommand(index, editPersonDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"choiwab"},"content":" String expected \u003d EditPersonCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editPersonDescriptor\u003d\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" + editPersonDescriptor + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"choiwab"},"content":" assertEquals(expected, editPersonCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"jayjay19630":26,"choiwab":18,"zaidansani":1,"-":156}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand.EditPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"choiwab":1,"-":70}},{"path":"src/test/java/seedu/address/logic/commands/FindCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.testutil.TypicalAppointments.getTypicalAppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.CARL;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.FIONA;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) for {@code FindCommand}.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class FindCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" private Model model \u003d new ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" getTypicalAddressBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" getTypicalAppointmentBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" private Model expectedModel \u003d new ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" getTypicalAddressBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" getTypicalAppointmentBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"Vangmay"},"content":" FindCommand findFirstCommand \u003d new FindPersonCommand(firstPredicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"Vangmay"},"content":" FindCommand findSecondCommand \u003d new FindPersonCommand(secondPredicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"Vangmay"},"content":" FindCommand findFirstCommandCopy \u003d new FindPersonCommand(firstPredicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void execute_zeroKeywords_noPersonFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"Vangmay"},"content":" FindCommand command \u003d new FindPersonCommand(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_multipleKeywords_multiplePersonsFound() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"Vangmay"},"content":" FindCommand command \u003d new FindPersonCommand(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" expectedModel.updateFilteredPersonList(predicate);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"Vangmay"},"content":" FindPersonCommand findCommand \u003d new FindPersonCommand(predicate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"Vangmay"},"content":" String expected \u003d FindPersonCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, findCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"Vangmay":7,"jayjay19630":9,"-":82}},{"path":"src/test/java/seedu/address/logic/commands/ListCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.testutil.TypicalAppointments.getTypicalAppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListCommand.","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ListCommandTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), getTypicalAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), getTypicalAppointmentBook(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"rxchell"},"content":" assertCommandSuccess(new ListPersonCommand(), model, ListPersonCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"rxchell"},"content":" expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" showPersonAtIndex(model, INDEX_FIRST_PERSON);","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"rxchell"},"content":" assertCommandSuccess(new ListPersonCommand(), model, ListPersonCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"rxchell"},"content":" expectedModel);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"rxchell":4,"-":35}},{"path":"src/test/java/seedu/address/logic/parser/AddPersonCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.commands.AddPersonCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":"public class AddPersonCommandParserTest {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" // whitespace before person entity string in preamble","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + PERSON_ENTITY_STRING + NAME_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddPersonCommand(expectedPerson));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" new AddPersonCommand(expectedPersonMultipleTags));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jayjay19630"},"content":" + ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"jayjay19630"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"jayjay19630"},"content":" new AddPersonCommand(expectedPerson));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"jayjay19630"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddPersonCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"jayjay19630"},"content":" parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"jayjay19630"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"jayjay19630"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"jayjay19630"},"content":" PERSON_ENTITY_STRING + INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"jayjay19630"},"content":" assertParseFailure(parser,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"jayjay19630"},"content":" PREAMBLE_NON_EMPTY + PERSON_ENTITY_STRING + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"jayjay19630":57,"-":159}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.logic.commands.AddPersonCommand;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand.EditPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"Vangmay"},"content":"import seedu.address.logic.commands.FindPersonCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":" public void parseCommand_addPerson() throws Exception {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" AddPersonCommand command \u003d (AddPersonCommand) parser.parseCommand(PersonUtil.getAddPersonCommand(person));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" assertEquals(new AddPersonCommand(person), command);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"zaidansani"},"content":" public void parseCommand_clearPersonCommand() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"zaidansani"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"zaidansani"},"content":" +","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"zaidansani"},"content":" \" \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"zaidansani"},"content":" + ParserUtil.PERSON_ENTITY_STRING) instanceof ClearCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"zaidansani"},"content":" /* ToDo: Make this work","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"zaidansani"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD +","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"zaidansani"},"content":" \" \" + ParserUtil.PERSON_ENTITY_STRING + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"zaidansani"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"zaidansani"},"content":" DeletePersonCommand command \u003d (DeletePersonCommand) parser.parseCommand(","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" DeletePersonCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"zaidansani"},"content":" assertEquals(new DeletePersonCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"choiwab"},"content":" public void parseCommand_editPerson() throws Exception {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"choiwab"},"content":" EditPersonCommand command \u003d (EditPersonCommand) parser.parseCommand(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"choiwab"},"content":" EditPersonCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"choiwab"},"content":" + PERSON_ENTITY_STRING + INDEX_FIRST_PERSON.getOneBased() + \" \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"choiwab"},"content":" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"choiwab"},"content":" assertEquals(new EditPersonCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"zaidansani"},"content":" // assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2024-10-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"Vangmay"},"content":" FindCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING + \" \" + \"foo bar baz\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"Vangmay"},"content":" assertEquals(new FindPersonCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"rxchell"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"rxchell"},"content":" + ParserUtil.PERSON_ENTITY_STRING) instanceof ListCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"rxchell"},"content":" // TODO: assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"Vangmay":3,"jayjay19630":6,"rxchell":3,"choiwab":8,"zaidansani":13,"-":78}},{"path":"src/test/java/seedu/address/logic/parser/DeletePersonCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"zaidansani"},"content":"import seedu.address.logic.commands.DeletePersonCommand;","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * outside of the DeleteCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * same path through the DeleteCommand, and therefore we test only one of them.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"zaidansani"},"content":"public class DeletePersonCommandParserTest {","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private DeleteCommandParser parser \u003d new DeleteCommandParser();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" assertParseSuccess(parser, PERSON_ENTITY_STRING + \"1\", new DeletePersonCommand(INDEX_FIRST_PERSON));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"zaidansani"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"zaidansani":3,"-":30}},{"path":"src/test/java/seedu/address/logic/parser/EditPersonCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"choiwab"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand.EditPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"choiwab"},"content":"public class EditPersonCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"choiwab"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"choiwab"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"choiwab"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"choiwab"},"content":" assertParseFailure(parser, PERSON_ENTITY_STRING + \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"choiwab"},"content":" String userInput \u003d PERSON_ENTITY_STRING + targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"choiwab"},"content":" EditCommand expectedCommand \u003d new EditPersonCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"choiwab":10,"-":58}},{"path":"src/test/java/seedu/address/logic/parser/FindCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"Vangmay"},"content":"import seedu.address.logic.commands.FindPersonCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class FindCommandParserTest {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private FindCommandParser parser \u003d new FindCommandParser();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" FindCommand expectedFindCommand \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"Vangmay"},"content":" new FindPersonCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"Vangmay"},"content":" assertParseSuccess(parser, \"person Alice Bob\", expectedFindCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"Vangmay"},"content":" assertParseSuccess(parser, \"person \\n Alice \\n \\t Bob \\t\", expectedFindCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"Vangmay":4,"-":31}},{"path":"src/test/java/seedu/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.testutil.TypicalAppointments.getTypicalAppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void hasPerson_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasPerson(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void hasPerson_personNotInAddressBook_returnsFalse() {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertFalse(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void hasPerson_personInAddressBook_returnsTrue() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" modelManager.addPerson(ALICE);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertTrue(modelManager.hasPerson(ALICE));","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"jayjay19630"},"content":" public void equals_checkAddressBooks_returnsCorrectEquality() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"jayjay19630"},"content":" modelManager \u003d new ModelManager(addressBook, getTypicalAppointmentBook(), userPrefs);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"jayjay19630"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, getTypicalAppointmentBook(), userPrefs);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"jayjay19630"},"content":" assertFalse(modelManager.equals(new ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"jayjay19630"},"content":" differentAddressBook,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jayjay19630"},"content":" getTypicalAppointmentBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"jayjay19630"},"content":" userPrefs)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"jayjay19630"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, getTypicalAppointmentBook(), userPrefs)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"jayjay19630"},"content":" assertFalse(modelManager.equals(new ModelManager(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"jayjay19630"},"content":" addressBook,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"jayjay19630"},"content":" getTypicalAppointmentBook(),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"jayjay19630"},"content":" differentUserPrefs)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"jayjay19630":13,"-":126}},{"path":"src/test/java/seedu/address/testutil/AppointmentBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.AppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":" * A utility class to help with building AppointmentBook objects.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":" * {@code AppointmentBook ab \u003d new AppointmentBookBuilder().withPerson(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"public class AppointmentBookBuilder {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":" private AppointmentBook appointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBookBuilder() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" appointmentBook \u003d new AppointmentBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBookBuilder(AppointmentBook appointmentBook) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" this.appointmentBook \u003d appointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" * Adds a new {@code Appointment} to the {@code Appointment} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBookBuilder withAppointment(Appointment appointment) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" appointmentBook.addAppointment(appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBook build() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" return appointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":34}},{"path":"src/test/java/seedu/address/testutil/AppointmentBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.AppointmentType;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Medicine;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Sickness;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":" * A utility class to help with building Appointment objects.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"public class AppointmentBuilder {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":" public static final String DEFAULT_APPOINTMENT_TYPE \u003d \"Health Checkup\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":" public static final LocalDateTime DEFAULT_APPOINTMENT_DATE_TIME \u003d","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":" LocalDateTime.of(2024, 10, 15, 10, 30);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":" public static final int DEFAULT_PERSON_ID \u003d 1;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":" public static final String DEFAULT_MEDICINE \u003d \"Panadol\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" public static final String DEFAULT_SICKNESS \u003d \"Flu\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":" private AppointmentType appointmentType;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" private LocalDateTime appointmentDateTime;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" private int personId;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" private Medicine medicine;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" private Sickness sickness;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" * Creates a {@code AppointmentBuilder} with the default details.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBuilder() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" appointmentType \u003d new AppointmentType(DEFAULT_APPOINTMENT_TYPE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" appointmentDateTime \u003d DEFAULT_APPOINTMENT_DATE_TIME;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" personId \u003d DEFAULT_PERSON_ID;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" medicine \u003d new Medicine(DEFAULT_MEDICINE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" sickness \u003d new Sickness(DEFAULT_SICKNESS);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" * Initializes the AppointmentBuilder with the data of {@code appointmentToCopy}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBuilder(Appointment appointmentToCopy) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" appointmentType \u003d appointmentToCopy.getAppointmentType();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" appointmentDateTime \u003d appointmentToCopy.getAppointmentDateTime();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":" personId \u003d appointmentToCopy.getPersonId();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" medicine \u003d appointmentToCopy.getMedicine();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" sickness \u003d appointmentToCopy.getSickness();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" * Sets the {@code AppointmentType} of the {@code Appointment} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBuilder withAppointmentType(String appointmentType) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" this.appointmentType \u003d new AppointmentType(appointmentType);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" * Sets the {@code personId} of the {@code Appointment} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBuilder withPersonId(int personId) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" this.personId \u003d personId;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":" * Sets the {@code Medicine} of the {@code Appointment} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBuilder withMedicine(String medicine) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jayjay19630"},"content":" this.medicine \u003d new Medicine(medicine);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jayjay19630"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jayjay19630"},"content":" * Sets the {@code appointmentDateTime} of the {@code LocalDateTime} that we are building.","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBuilder withDateTime(LocalDateTime dateTime) {","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" this.appointmentDateTime \u003d dateTime;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jayjay19630"},"content":" return this;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jayjay19630"},"content":" * Sets the {@code Sickness} of the {@code Appointment} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" public AppointmentBuilder withSickness(String sickness) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" this.sickness \u003d new Sickness(sickness);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":" * Builds the {@code Appointment} object.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jayjay19630"},"content":" public Appointment build() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jayjay19630"},"content":" return new Appointment(appointmentType, appointmentDateTime, personId, sickness, medicine);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":97}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand.EditPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"choiwab":1,"-":86}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.parser.ParserUtil.PERSON_ENTITY_STRING;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"choiwab"},"content":"import seedu.address.logic.commands.EditPersonCommand.EditPersonDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" public static String getAddPersonCommand(Person person) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" return AddCommand.COMMAND_WORD + \" \" + PERSON_ENTITY_STRING + \" \" + getPersonDetails(person);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"jayjay19630":3,"choiwab":1,"-":59}},{"path":"src/test/java/seedu/address/testutil/TypicalAppointments.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"jayjay19630"},"content":"package seedu.address.testutil;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_APPOINTMENT_TYPE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_APPOINTMENT_TYPE_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEDICINE_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_MEDICINE_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SICKNESS_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"jayjay19630"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SICKNESS_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"jayjay19630"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"jayjay19630"},"content":"import java.util.ArrayList;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"jayjay19630"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"jayjay19630"},"content":"import java.util.List;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.AppointmentBook;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"jayjay19630"},"content":"import seedu.address.model.appointment.Appointment;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"jayjay19630"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"jayjay19630"},"content":" * A utility class containing a list of {@code Appointment} objects to be used in tests.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"jayjay19630"},"content":"public class TypicalAppointments {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"jayjay19630"},"content":" // Set default dates and times for the appointments","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"jayjay19630"},"content":" public static final LocalDateTime DEFAULT_DATE_TIME_1 \u003d LocalDateTime.of(2024, 10, 15, 10, 30);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"jayjay19630"},"content":" public static final LocalDateTime DEFAULT_DATE_TIME_2 \u003d LocalDateTime.of(2024, 11, 10, 14, 0);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"jayjay19630"},"content":" public static final LocalDateTime DEFAULT_DATE_TIME_3 \u003d LocalDateTime.of(2024, 12, 5, 9, 0);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"jayjay19630"},"content":" public static final LocalDateTime DEFAULT_DATE_TIME_4 \u003d LocalDateTime.of(2024, 10, 20, 11, 15);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"jayjay19630"},"content":" public static final LocalDateTime DEFAULT_DATE_TIME_5 \u003d LocalDateTime.of(2024, 11, 25, 16, 0);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"jayjay19630"},"content":" public static final LocalDateTime DEFAULT_DATE_TIME_6 \u003d LocalDateTime.of(2024, 12, 1, 8, 30);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"jayjay19630"},"content":" public static final LocalDateTime DEFAULT_DATE_TIME_7 \u003d LocalDateTime.of(2024, 10, 30, 15, 45);","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_1 \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(\"Health Checkup\").withPersonId(1)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"jayjay19630"},"content":" .withSickness(\"Flu\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(\"Panadol\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_1)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_2 \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(\"Dental Checkup\").withPersonId(2)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"jayjay19630"},"content":" .withSickness(\"Toothache\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(\"Ibuprofen\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_2)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_3 \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(\"Eye Exam\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"jayjay19630"},"content":" .withPersonId(3)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"jayjay19630"},"content":" .withSickness(\"Eye Strain\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(\"Eye Drops\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_3)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_4 \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(\"Physical Therapy\").withPersonId(4)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"jayjay19630"},"content":" .withSickness(\"Back Pain\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(\"Paracetamol\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_4)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_5 \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(\"Vaccination\").withPersonId(5)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"jayjay19630"},"content":" .withSickness(\"None\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(\"Vaccine\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_5)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_6 \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(\"Routine Checkup\").withPersonId(6)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"jayjay19630"},"content":" .withSickness(\"None\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(\"None\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_6)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_7 \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(\"Consultation\").withPersonId(7)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"jayjay19630"},"content":" .withSickness(\"Headache\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(\"Aspirin\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_7)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"jayjay19630"},"content":" // Manually added","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_8 \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(\"Emergency Room\").withPersonId(8)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"jayjay19630"},"content":" .withSickness(\"Injury\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(\"Morphine\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_4)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_9 \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(\"Surgery Consultation\").withPersonId(9)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"jayjay19630"},"content":" .withSickness(\"Pre-Surgery\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(\"Pre-Meds\")","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_5)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"jayjay19630"},"content":" // Manually added - Appointment\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_AMY \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(VALID_APPOINTMENT_TYPE_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"jayjay19630"},"content":" .withSickness(VALID_SICKNESS_AMY)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(VALID_MEDICINE_AMY)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_6)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"jayjay19630"},"content":" public static final Appointment APPOINTMENT_BOB \u003d new AppointmentBuilder()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"jayjay19630"},"content":" .withAppointmentType(VALID_APPOINTMENT_TYPE_BOB)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"jayjay19630"},"content":" .withSickness(VALID_SICKNESS_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"jayjay19630"},"content":" .withMedicine(VALID_MEDICINE_BOB)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"jayjay19630"},"content":" .withDateTime(DEFAULT_DATE_TIME_7)","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"jayjay19630"},"content":" .build();","lastModifiedDate":"2024-10-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"jayjay19630"},"content":" public static final String KEYWORD_MATCHING_CHECKUP \u003d \"Checkup\"; // A keyword that matches Checkup","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"jayjay19630"},"content":" private TypicalAppointments() {} // prevents instantiation","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"jayjay19630"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"jayjay19630"},"content":" * Returns an {@code AppointmentBook} with all the typical appointments.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"jayjay19630"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"jayjay19630"},"content":" public static AppointmentBook getTypicalAppointmentBook() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"jayjay19630"},"content":" AppointmentBook ab \u003d new AppointmentBook();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"jayjay19630"},"content":" for (Appointment appointment : getTypicalAppointments()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"jayjay19630"},"content":" ab.addAppointment(appointment);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"jayjay19630"},"content":" return ab;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"jayjay19630"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"jayjay19630"},"content":" public static List\u003cAppointment\u003e getTypicalAppointments() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"jayjay19630"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"jayjay19630"},"content":" APPOINTMENT_1,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"jayjay19630"},"content":" APPOINTMENT_2,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"jayjay19630"},"content":" APPOINTMENT_3,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"jayjay19630"},"content":" APPOINTMENT_4,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"jayjay19630"},"content":" APPOINTMENT_5,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"jayjay19630"},"content":" APPOINTMENT_6,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"jayjay19630"},"content":" APPOINTMENT_7));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"jayjay19630"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"jayjay19630"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"jayjay19630":136}}] diff --git a/AY2425S1-CS2103T-W10-2_tp_master/commits.json b/AY2425S1-CS2103T-W10-2_tp_master/commits.json index ff456945..4efb6e1d 100644 --- a/AY2425S1-CS2103T-W10-2_tp_master/commits.json +++ b/AY2425S1-CS2103T-W10-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"Vangmay":[{"date":"2024-09-27","commitResults":[{"hash":"017d79be5cedab82352edd5ae3cd2c5f9cd87318","isMergeCommit":false,"messageTitle":"Add about me","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"c66a4be2fc893c714f82bb58328cd493e951f674","isMergeCommit":false,"messageTitle":"Add about me","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":84}}},{"hash":"a283cc3680c12d8ddda2ad2d6734d23bd920cad8","isMergeCommit":false,"messageTitle":"Add whitespace","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"82e37a9c565922dc3a3e12352cc66c7e8318d417","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"076c9a4180fbf476db9d5074126cf6d3a40c5061","isMergeCommit":true,"messageTitle":"Merge pull request #25 from rxchell/about-us","messageBody":"Update AboutUs page with Rachel\u0027s details","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"c9b96d033c5124f97a6ba647a391f46bfcc6411a","isMergeCommit":false,"messageTitle":"Add Find Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"c67f0e471b1298ee15b063c7152cecb44360a61f","isMergeCommit":false,"messageTitle":"Refactor FindPersonCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":9},"test-code":{"insertions":16,"deletions":20}}},{"hash":"e3c214c84ecb508b4c6b27a76d0522524a72328f","isMergeCommit":true,"messageTitle":"Merge pull request #55 from rxchell/refactor-list-command","messageBody":"Refactor abstraction for List Command","fileTypesAndContributionMap":{}},{"hash":"a9ea7639018ae014dba7385e7abe155f5fd6b6bf","isMergeCommit":true,"messageTitle":"Merge pull request #54 from zaidansani/refactor-clear-command","messageBody":"Refactor ClearCommand to ClearPersonCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"11646ecfd226fb38971b1f57a514aaa9b361f040","isMergeCommit":false,"messageTitle":"Add style changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"3ba9b8ccf75ace25be1b42d8809f62d1f6c2a517","isMergeCommit":false,"messageTitle":"Fix test error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"9a88fdd299e3d45e2fd8089ba9d27b49c37f21f5","isMergeCommit":false,"messageTitle":"Fix build error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"3f112718f3f0c87c51b290164b967e04e681e1ac","isMergeCommit":false,"messageTitle":"Fix build error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}}]}],"rxchell":[{"date":"2024-09-27","commitResults":[{"hash":"afb92eb6dfd90afc41451a158fe6441e90767025","isMergeCommit":false,"messageTitle":"Add details for AboutUs","messageBody":"Let\u0027s\n* add Rachel\u0027s details in AboutUs.md\n","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":0}}},{"hash":"66549575dc2d8bd5b7dafe9cd9349611f00ecb8b","isMergeCommit":false,"messageTitle":"Add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"813ed170cbb6a57c8ed146153d6c9d7b53cd9c2e","isMergeCommit":true,"messageTitle":"Merge pull request #21 from jayjay19630/jo-an/update-about-us-page","messageBody":"Update AboutUs page with Jo An details","fileTypesAndContributionMap":{}}]},{"date":"2024-09-30","commitResults":[{"hash":"c0f50a89471ffda7779b9a1109336fdd94f1a8a5","isMergeCommit":false,"messageTitle":"Update build status badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"b48a9ffa85d90a02acf794bc5b98db523728183d","isMergeCommit":false,"messageTitle":"Update link to build status badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"a3c4bde442b52aaa2559c53365c41cf67bb56aeb","isMergeCommit":false,"messageTitle":"Acknowledge the original source","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"bd609b53e4adf2be1fc8a5b5dd330dd6ccece1d1","isMergeCommit":false,"messageTitle":"Update contents to match DocTrack","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"43621bc7d68378a35806e7c15c94431df2764bcb","isMergeCommit":false,"messageTitle":"Update site-wide settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":6}}},{"hash":"d69c92f17d0c3ae238b9dc75048fc4f283273a14","isMergeCommit":false,"messageTitle":"Update target user profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":6}}},{"hash":"14f51c7d8f9ede0dda41b16face7535195e40270","isMergeCommit":false,"messageTitle":"Update value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ae9fcec6915d2676500b87b15151652eb640151e","isMergeCommit":false,"messageTitle":"Add user stories to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":10}}}]},{"date":"2024-10-01","commitResults":[{"hash":"5044ba6414abc6aa531070244c4ded8cf5da1719","isMergeCommit":true,"messageTitle":"Merge pull request #35 from jayjay19630/jo-an/add-use-cases","messageBody":"feat: Add use cases to developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-08","commitResults":[{"hash":"120e5a273052967708cdfab7fcd40b81545e766b","isMergeCommit":false,"messageTitle":"Add personId","messageBody":"Let\u0027s\n* add a static counter to track the total persons\n* add a personId as a field for Person\n","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":0}}},{"hash":"693d4835347b1d9e9ef12f384e2ee5a6cd710a36","isMergeCommit":false,"messageTitle":"Add test for personID","messageBody":"Let\u0027s\n* ensure that personID increments correctly\n","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}}]},{"date":"2024-10-09","commitResults":[{"hash":"56d3162dba122f67c09d81a0e89b83b3918def08","isMergeCommit":false,"messageTitle":"refactor: list command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":52,"deletions":9},"test-code":{"insertions":3,"deletions":3}}},{"hash":"50521676f1026bf0d29b06fcfce6f975718e7336","isMergeCommit":false,"messageTitle":"refactor: list command","messageBody":"also update test cases\n","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":0},"test-code":{"insertions":7,"deletions":4}}},{"hash":"2ee9ef29cf73c68e8979e82ea0a16706c2edd842","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-personID","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/logic/commands/AddPersonCommandIntegrationTest.java\n","fileTypesAndContributionMap":{}},{"hash":"2f21715ed0bc6099153f0917d33280056a2f460a","isMergeCommit":false,"messageTitle":"Update test case to match abstractions","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"0b28578f1189798d2668c306940001452192efa7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-find-command","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"0ad073a6126bbce8eed0ee2673e58b4eda1aa092","isMergeCommit":true,"messageTitle":"Merge pull request #57 from Vangmay/branch-find-command","messageBody":"Refactor Find Command","fileTypesAndContributionMap":{}}]}],"jayjay19630":[{"date":"2024-09-27","commitResults":[{"hash":"2eafeb1e7f9249c5939d8aa68497e9e79295d073","isMergeCommit":false,"messageTitle":"feat: update about us with Jo An details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"2f57ac6ed500fd543f311af16d8a1f06091d5270","isMergeCommit":false,"messageTitle":"feat: create jayjay19630.md page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"8606a3e5737e6a069bf7ed08f36f2f5df6622673","isMergeCommit":false,"messageTitle":"fix: resolve checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8dc96172a7020ce7a84a9e91b0b6fc9c701c33cb","isMergeCommit":true,"messageTitle":"Merge pull request #24 from choiwab/update-about-us-jae","messageBody":"Update Aboutus.md: Add personal details for Jae","fileTypesAndContributionMap":{}},{"hash":"d6920e7d193df322001fa52b10927b136276d0b7","isMergeCommit":false,"messageTitle":"fix: cleanup aboutus page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":42}}},{"hash":"a7cf87de71eb3d44c555e6ba7e6503db3f9939cf","isMergeCommit":false,"messageTitle":"fix: change jae link to choiwab.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"47d3cbdb2dd4838278b0f7c7e605e837887c0fed","isMergeCommit":false,"messageTitle":"fix: make roles format consistent","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":8}}},{"hash":"40ce42d5e79fa289a03baae22c3f8df5b72237f2","isMergeCommit":false,"messageTitle":"feat: create use case for finding patient appointment","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":8}}},{"hash":"c50826b1531e8d7169454e0abf814ca969818309","isMergeCommit":false,"messageTitle":"feat: create use cases for updating patient and appointment","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":63,"deletions":4}}},{"hash":"f92e31e9522a488120e719a6b460a4f726e8eab8","isMergeCommit":false,"messageTitle":"feat: create usecases for duplicate","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":60,"deletions":2}}},{"hash":"0568923841318b8cffbe97393ea4ad37dad50c9e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:jayjay19630/tp into jo-an/add-use-cases","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"77fbb4d12e7a0e80f10475eb6fff35635000cc33","isMergeCommit":false,"messageTitle":"feat: add usecases for deleting appointment and finding patient from appointment","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}}]},{"date":"2024-09-30","commitResults":[{"hash":"ed51ea7506d318efa4d571f659b7081cc14128ce","isMergeCommit":true,"messageTitle":"Merge pull request #38 from zaidansani/readme-nfr","messageBody":"Add non-functional requirements","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"0362ef3c1f907481c3ba785835b199e9b40080dc","isMergeCommit":false,"messageTitle":"chore: add issue templates","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":53,"deletions":0}}}]},{"date":"2024-10-08","commitResults":[{"hash":"8b3e7e7871444f876160c3d132832c08937fa73c","isMergeCommit":false,"messageTitle":"feat: abstract addperson command into its own command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":126,"deletions":64}}},{"hash":"5365aebfee441093ff8d573e818b50f384055344","isMergeCommit":false,"messageTitle":"feat: make parser use switch case for different add commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":28}}},{"hash":"fba48b620850be9764d201e6a0db249b4979c081","isMergeCommit":false,"messageTitle":"feat: fix add person command tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":5},"other":{"insertions":23,"deletions":23},"test-code":{"insertions":12,"deletions":11}}},{"hash":"fe418f331cfbab74b9dd8a234ce287e58d1d433b","isMergeCommit":false,"messageTitle":"refactor: create abstract class for delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":145,"deletions":53}}},{"hash":"565aa3869437603ad6b567d251038ebeb156d0ed","isMergeCommit":false,"messageTitle":"fix: get index for delete command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":3}}}]},{"date":"2024-10-09","commitResults":[{"hash":"a65765e7bd0c1a8c75094b86b2c034aacd1c5d9e","isMergeCommit":false,"messageTitle":"fix: resolve logic manageer tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":6},"test-code":{"insertions":49,"deletions":39}}},{"hash":"9317742129b25abbe7ab34c1417cc71a8d7d96ad","isMergeCommit":false,"messageTitle":"fix: resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":5},"test-code":{"insertions":48,"deletions":25}}}]}],"choiwab":[{"date":"2024-09-27","commitResults":[{"hash":"5dec60851a1970e88bf1edd600f89f4d95042b14","isMergeCommit":true,"messageTitle":"Merge pull request #10 from zaidansani/add-zaidan-photo","messageBody":"Add Zaidan\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"ea61bc77bb8c9df3659d5c4f64a011f3e169c226","isMergeCommit":false,"messageTitle":"Update Aboutus.md: Add personal details for Jae","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"8c0dfb58ad37ff4240d98dd672cad916ca7edff3","isMergeCommit":false,"messageTitle":"Add choiwab.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"0fb8031bb72a80a562625ba13e7eb370ab6d4704","isMergeCommit":true,"messageTitle":"Merge pull request #22 from zaidansani/aboutme-zaidan","messageBody":"Update AboutUs page for Zaidan","fileTypesAndContributionMap":{}},{"hash":"6b8a5debbac4ff578e7f62836c8837293e538a62","isMergeCommit":false,"messageTitle":"Update choiwab.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"69570b8f49cf80b7de68f1d2fac1b5495767a500","isMergeCommit":false,"messageTitle":"Update AboutUs.md: Fix Name after ###","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"267bec4ede66398d9cb22a0e96089b0dfb79347d","isMergeCommit":false,"messageTitle":"Delete docs/team/jae.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}}]},{"date":"2024-09-30","commitResults":[{"hash":"c0bb06721e1e77cfb8c6896907ced0b3b294be28","isMergeCommit":true,"messageTitle":"Merge pull request #36 from rxchell/update-readme","messageBody":"Update README page to match project","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"14adc890a2f839556f9962a3d4a9e3e8d067ffd6","isMergeCommit":true,"messageTitle":"Merge pull request #37 from rxchell/update-developer-guide","messageBody":"Update target user, value proposition, and user stories in developer guide","fileTypesAndContributionMap":{}}]}],"zaidansani":[{"date":"2024-09-27","commitResults":[{"hash":"50a5fdffe90d9ac502ac77645eea9f7847af38ba","isMergeCommit":false,"messageTitle":"Update AboutUs page for Zaidan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":7}}},{"hash":"1e17fe83204a9d19c8f582234a3430401c80645c","isMergeCommit":false,"messageTitle":"Add personal portfolio page for Zaidan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":0}}},{"hash":"a2321b2f79c403b9681d020e4139b25cef4fdd0a","isMergeCommit":false,"messageTitle":"Add personal portfolio page for Zaidan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"057d02361b8860543b0dc57fcffe8cdf54905480","isMergeCommit":false,"messageTitle":"Update portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":6}}},{"hash":"eb618235dc5ec261690c16bbc6c2ed06578e0c31","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-about","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dccb975fd4376ab3b65556d3d3d034fc96bfbff5","isMergeCommit":true,"messageTitle":"Merge pull request #27 from Vangmay/update-about","messageBody":"Update aboutus page with Vangmay\u0027s details","fileTypesAndContributionMap":{}},{"hash":"56e5e8a917fdbb938cc994c118015e8b99f5f569","isMergeCommit":true,"messageTitle":"Merge pull request #29 from jayjay19630/jo-an/clean-up-aboutus-page","messageBody":"fix: Cleanup AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2024-09-30","commitResults":[{"hash":"2bf6a7299997de603ebf684ffda599013e4f2166","isMergeCommit":false,"messageTitle":"Add non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":2}}}]},{"date":"2024-10-03","commitResults":[{"hash":"7c424b5819f0abf7c67030e824dab9781707f5c5","isMergeCommit":true,"messageTitle":"Merge pull request #40 from jayjay19630/jo-an/add-issue-templates","messageBody":"chore: add Github issue templates","fileTypesAndContributionMap":{}},{"hash":"72d9fa2a93da22656c2478dfbf083bdac2bee9f4","isMergeCommit":false,"messageTitle":"Refactor: DeleteCommand","messageBody":"Two DeleteCommands will exist for next increment.\n\nLet\u0027s\n* refactor all DeleteCommands.\n* add support to parser to take in new command format.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":6},"other":{"insertions":33,"deletions":33},"test-code":{"insertions":4,"deletions":4}}},{"hash":"4e2cc6f50b95874ed58aa468f639bd6dd95ba965","isMergeCommit":false,"messageTitle":"Edit command word for all","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6},"test-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-04","commitResults":[{"hash":"b212a2b1a6bf0bda5d6a2f9127e784bd6d6ddee5","isMergeCommit":false,"messageTitle":"Fix test with new expected input","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-05","commitResults":[{"hash":"49aaa297c8ec01a89d03363ea333757ddfbda2f4","isMergeCommit":true,"messageTitle":"Merge pull request #42 from zaidansani/refactor-delete-command","messageBody":"Refactor delete command","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"6fce1615df07b94d5fb54e08409eac749a3fd7c4","isMergeCommit":true,"messageTitle":"Merge pull request #52 from jayjay19630/feat/create-command-abstractions","messageBody":"Create Command Abstractions","fileTypesAndContributionMap":{}},{"hash":"df2d0c86cf1c236499c92ea38d79075cf9f3e2e9","isMergeCommit":false,"messageTitle":"refactor: clear command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":8},"test-code":{"insertions":12,"deletions":6}}}]},{"date":"2024-10-12","commitResults":[{"hash":"d068b6111ae21879b1232a57d82ed3281cf8128f","isMergeCommit":true,"messageTitle":"Merge pull request #51 from rxchell/add-personID","messageBody":"Add personId","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Vangmay":{"docs":6,"functional-code":78,"test-code":14},"rxchell":{"docs":79,"functional-code":97,"test-code":28},"jayjay19630":{"docs":246,"functional-code":242,"test-code":101},"choiwab":{"docs":10,"functional-code":0,"test-code":0},"zaidansani":{"docs":30,"functional-code":79,"test-code":37}},"authorContributionVariance":{"Vangmay":978.9832,"rxchell":921.97736,"jayjay19630":17111.55,"choiwab":23.954645,"zaidansani":904.2307},"authorDisplayNameMap":{"Vangmay":"CS2103T-W10-2 SACH..GMAY","rxchell":"CS2103T-W10-2 RACH.. JIA","jayjay19630":"CS2103T-W10-2 JO A..O AN","choiwab":"CS2103T-W10-2 CHOI..YEOK","zaidansani":"CS2103T-W10-2 MUHA..SANI"}} +{"authorDailyContributionsMap":{"Vangmay":[{"date":"2024-09-27","commitResults":[{"hash":"017d79be5cedab82352edd5ae3cd2c5f9cd87318","isMergeCommit":false,"messageTitle":"Add about me","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"c66a4be2fc893c714f82bb58328cd493e951f674","isMergeCommit":false,"messageTitle":"Add about me","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":84}}},{"hash":"a283cc3680c12d8ddda2ad2d6734d23bd920cad8","isMergeCommit":false,"messageTitle":"Add whitespace","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"82e37a9c565922dc3a3e12352cc66c7e8318d417","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into about-us","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"076c9a4180fbf476db9d5074126cf6d3a40c5061","isMergeCommit":true,"messageTitle":"Merge pull request #25 from rxchell/about-us","messageBody":"Update AboutUs page with Rachel\u0027s details","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"c9b96d033c5124f97a6ba647a391f46bfcc6411a","isMergeCommit":false,"messageTitle":"Add Find Command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":0}}},{"hash":"c67f0e471b1298ee15b063c7152cecb44360a61f","isMergeCommit":false,"messageTitle":"Refactor FindPersonCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":9},"test-code":{"insertions":16,"deletions":20}}},{"hash":"e3c214c84ecb508b4c6b27a76d0522524a72328f","isMergeCommit":true,"messageTitle":"Merge pull request #55 from rxchell/refactor-list-command","messageBody":"Refactor abstraction for List Command","fileTypesAndContributionMap":{}},{"hash":"a9ea7639018ae014dba7385e7abe155f5fd6b6bf","isMergeCommit":true,"messageTitle":"Merge pull request #54 from zaidansani/refactor-clear-command","messageBody":"Refactor ClearCommand to ClearPersonCommand","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"11646ecfd226fb38971b1f57a514aaa9b361f040","isMergeCommit":false,"messageTitle":"Add style changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"3ba9b8ccf75ace25be1b42d8809f62d1f6c2a517","isMergeCommit":false,"messageTitle":"Fix test error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":1}}},{"hash":"9a88fdd299e3d45e2fd8089ba9d27b49c37f21f5","isMergeCommit":false,"messageTitle":"Fix build error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":0,"deletions":2}}},{"hash":"3f112718f3f0c87c51b290164b967e04e681e1ac","isMergeCommit":false,"messageTitle":"Fix build error","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":1,"deletions":2}}}]}],"rxchell":[{"date":"2024-09-27","commitResults":[{"hash":"afb92eb6dfd90afc41451a158fe6441e90767025","isMergeCommit":false,"messageTitle":"Add details for AboutUs","messageBody":"Let\u0027s\n* add Rachel\u0027s details in AboutUs.md\n","fileTypesAndContributionMap":{"docs":{"insertions":22,"deletions":0}}},{"hash":"66549575dc2d8bd5b7dafe9cd9349611f00ecb8b","isMergeCommit":false,"messageTitle":"Add new line at EOF","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"813ed170cbb6a57c8ed146153d6c9d7b53cd9c2e","isMergeCommit":true,"messageTitle":"Merge pull request #21 from jayjay19630/jo-an/update-about-us-page","messageBody":"Update AboutUs page with Jo An details","fileTypesAndContributionMap":{}}]},{"date":"2024-09-30","commitResults":[{"hash":"c0f50a89471ffda7779b9a1109336fdd94f1a8a5","isMergeCommit":false,"messageTitle":"Update build status badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"b48a9ffa85d90a02acf794bc5b98db523728183d","isMergeCommit":false,"messageTitle":"Update link to build status badge","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":1}}},{"hash":"a3c4bde442b52aaa2559c53365c41cf67bb56aeb","isMergeCommit":false,"messageTitle":"Acknowledge the original source","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"bd609b53e4adf2be1fc8a5b5dd330dd6ccece1d1","isMergeCommit":false,"messageTitle":"Update contents to match DocTrack","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":9}}},{"hash":"43621bc7d68378a35806e7c15c94431df2764bcb","isMergeCommit":false,"messageTitle":"Update site-wide settings","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":9,"deletions":6}}},{"hash":"d69c92f17d0c3ae238b9dc75048fc4f283273a14","isMergeCommit":false,"messageTitle":"Update target user profile","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":6}}},{"hash":"14f51c7d8f9ede0dda41b16face7535195e40270","isMergeCommit":false,"messageTitle":"Update value proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"ae9fcec6915d2676500b87b15151652eb640151e","isMergeCommit":false,"messageTitle":"Add user stories to DG","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":40,"deletions":10}}}]},{"date":"2024-10-01","commitResults":[{"hash":"5044ba6414abc6aa531070244c4ded8cf5da1719","isMergeCommit":true,"messageTitle":"Merge pull request #35 from jayjay19630/jo-an/add-use-cases","messageBody":"feat: Add use cases to developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-08","commitResults":[{"hash":"120e5a273052967708cdfab7fcd40b81545e766b","isMergeCommit":false,"messageTitle":"Add personId","messageBody":"Let\u0027s\n* add a static counter to track the total persons\n* add a personId as a field for Person\n","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":0}}},{"hash":"693d4835347b1d9e9ef12f384e2ee5a6cd710a36","isMergeCommit":false,"messageTitle":"Add test for personID","messageBody":"Let\u0027s\n* ensure that personID increments correctly\n","fileTypesAndContributionMap":{"test-code":{"insertions":17,"deletions":0}}}]},{"date":"2024-10-09","commitResults":[{"hash":"56d3162dba122f67c09d81a0e89b83b3918def08","isMergeCommit":false,"messageTitle":"refactor: list command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":52,"deletions":9},"test-code":{"insertions":3,"deletions":3}}},{"hash":"50521676f1026bf0d29b06fcfce6f975718e7336","isMergeCommit":false,"messageTitle":"refactor: list command","messageBody":"also update test cases\n","fileTypesAndContributionMap":{"functional-code":{"insertions":32,"deletions":0},"test-code":{"insertions":7,"deletions":4}}},{"hash":"2ee9ef29cf73c68e8979e82ea0a16706c2edd842","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-personID","messageBody":"# Conflicts:\n#\tsrc/test/java/seedu/address/logic/commands/AddPersonCommandIntegrationTest.java\n","fileTypesAndContributionMap":{}},{"hash":"2f21715ed0bc6099153f0917d33280056a2f460a","isMergeCommit":false,"messageTitle":"Update test case to match abstractions","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":1}}}]},{"date":"2024-10-10","commitResults":[{"hash":"0b28578f1189798d2668c306940001452192efa7","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into branch-find-command","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"0ad073a6126bbce8eed0ee2673e58b4eda1aa092","isMergeCommit":true,"messageTitle":"Merge pull request #57 from Vangmay/branch-find-command","messageBody":"Refactor Find Command","fileTypesAndContributionMap":{}}]}],"jayjay19630":[{"date":"2024-09-27","commitResults":[{"hash":"2eafeb1e7f9249c5939d8aa68497e9e79295d073","isMergeCommit":false,"messageTitle":"feat: update about us with Jo An details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"2f57ac6ed500fd543f311af16d8a1f06091d5270","isMergeCommit":false,"messageTitle":"feat: create jayjay19630.md page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"8606a3e5737e6a069bf7ed08f36f2f5df6622673","isMergeCommit":false,"messageTitle":"fix: resolve checkstyle issue","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"8dc96172a7020ce7a84a9e91b0b6fc9c701c33cb","isMergeCommit":true,"messageTitle":"Merge pull request #24 from choiwab/update-about-us-jae","messageBody":"Update Aboutus.md: Add personal details for Jae","fileTypesAndContributionMap":{}},{"hash":"d6920e7d193df322001fa52b10927b136276d0b7","isMergeCommit":false,"messageTitle":"fix: cleanup aboutus page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":17,"deletions":42}}},{"hash":"a7cf87de71eb3d44c555e6ba7e6503db3f9939cf","isMergeCommit":false,"messageTitle":"fix: change jae link to choiwab.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"47d3cbdb2dd4838278b0f7c7e605e837887c0fed","isMergeCommit":false,"messageTitle":"fix: make roles format consistent","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":8}}},{"hash":"40ce42d5e79fa289a03baae22c3f8df5b72237f2","isMergeCommit":false,"messageTitle":"feat: create use case for finding patient appointment","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":29,"deletions":8}}},{"hash":"c50826b1531e8d7169454e0abf814ca969818309","isMergeCommit":false,"messageTitle":"feat: create use cases for updating patient and appointment","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":63,"deletions":4}}},{"hash":"f92e31e9522a488120e719a6b460a4f726e8eab8","isMergeCommit":false,"messageTitle":"feat: create usecases for duplicate","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":60,"deletions":2}}},{"hash":"0568923841318b8cffbe97393ea4ad37dad50c9e","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of github.com:jayjay19630/tp into jo-an/add-use-cases","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"77fbb4d12e7a0e80f10475eb6fff35635000cc33","isMergeCommit":false,"messageTitle":"feat: add usecases for deleting appointment and finding patient from appointment","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":46,"deletions":0}}}]},{"date":"2024-09-30","commitResults":[{"hash":"ed51ea7506d318efa4d571f659b7081cc14128ce","isMergeCommit":true,"messageTitle":"Merge pull request #38 from zaidansani/readme-nfr","messageBody":"Add non-functional requirements","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"0362ef3c1f907481c3ba785835b199e9b40080dc","isMergeCommit":false,"messageTitle":"chore: add issue templates","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":53,"deletions":0}}}]},{"date":"2024-10-08","commitResults":[{"hash":"8b3e7e7871444f876160c3d132832c08937fa73c","isMergeCommit":false,"messageTitle":"feat: abstract addperson command into its own command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":126,"deletions":64}}},{"hash":"5365aebfee441093ff8d573e818b50f384055344","isMergeCommit":false,"messageTitle":"feat: make parser use switch case for different add commands","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":50,"deletions":28}}},{"hash":"fba48b620850be9764d201e6a0db249b4979c081","isMergeCommit":false,"messageTitle":"feat: fix add person command tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":5},"other":{"insertions":23,"deletions":23},"test-code":{"insertions":12,"deletions":11}}},{"hash":"fe418f331cfbab74b9dd8a234ce287e58d1d433b","isMergeCommit":false,"messageTitle":"refactor: create abstract class for delete command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":145,"deletions":53}}},{"hash":"565aa3869437603ad6b567d251038ebeb156d0ed","isMergeCommit":false,"messageTitle":"fix: get index for delete command parser","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":3}}}]},{"date":"2024-10-09","commitResults":[{"hash":"a65765e7bd0c1a8c75094b86b2c034aacd1c5d9e","isMergeCommit":false,"messageTitle":"fix: resolve logic manageer tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":13,"deletions":6},"test-code":{"insertions":49,"deletions":39}}},{"hash":"9317742129b25abbe7ab34c1417cc71a8d7d96ad","isMergeCommit":false,"messageTitle":"fix: resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":5},"test-code":{"insertions":48,"deletions":25}}}]},{"date":"2024-10-12","commitResults":[{"hash":"7e3fac5e04356c9e5858882627ab89d5ffedf5a3","isMergeCommit":false,"messageTitle":"create appointment model and readonly book","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":315,"deletions":0}}},{"hash":"7446deb8852b3c48caa7017f4dabaedaab5c074e","isMergeCommit":false,"messageTitle":"create unique appointmnet list","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":169,"deletions":0}}},{"hash":"b6c91be29dfec43330db12ed6d5da4c5416aa6f0","isMergeCommit":false,"messageTitle":"create appointment book","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":130,"deletions":0}}},{"hash":"60dade0e4db92702ac5c0b31dd6235f03e6b0182","isMergeCommit":false,"messageTitle":"fix: resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":142,"deletions":23},"test-code":{"insertions":64,"deletions":22}}},{"hash":"1435a7114cbbf707e35ee38570448af79985d660","isMergeCommit":false,"messageTitle":"fix: create appointment builder","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":0},"test-code":{"insertions":257,"deletions":22}}},{"hash":"745e7d5d87190440a37336f103c584fba5d3cde4","isMergeCommit":false,"messageTitle":"fix: resolve checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":2}}}]},{"date":"2024-10-13","commitResults":[{"hash":"c730a3c29bc915bd1eac8606dfb33dd6da24262c","isMergeCommit":false,"messageTitle":"feat: add datetime to appointments","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":3},"test-code":{"insertions":96,"deletions":21}}},{"hash":"9a4a4d28d375955e05aeddb3cd8e7e85bec19894","isMergeCommit":true,"messageTitle":"Merge pull request #58 from choiwab/refractor-Edit","messageBody":"Refractor EditCommand","fileTypesAndContributionMap":{}}]}],"choiwab":[{"date":"2024-09-27","commitResults":[{"hash":"5dec60851a1970e88bf1edd600f89f4d95042b14","isMergeCommit":true,"messageTitle":"Merge pull request #10 from zaidansani/add-zaidan-photo","messageBody":"Add Zaidan\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"ea61bc77bb8c9df3659d5c4f64a011f3e169c226","isMergeCommit":false,"messageTitle":"Update Aboutus.md: Add personal details for Jae","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}},{"hash":"8c0dfb58ad37ff4240d98dd672cad916ca7edff3","isMergeCommit":false,"messageTitle":"Add choiwab.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":0}}},{"hash":"0fb8031bb72a80a562625ba13e7eb370ab6d4704","isMergeCommit":true,"messageTitle":"Merge pull request #22 from zaidansani/aboutme-zaidan","messageBody":"Update AboutUs page for Zaidan","fileTypesAndContributionMap":{}},{"hash":"6b8a5debbac4ff578e7f62836c8837293e538a62","isMergeCommit":false,"messageTitle":"Update choiwab.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"69570b8f49cf80b7de68f1d2fac1b5495767a500","isMergeCommit":false,"messageTitle":"Update AboutUs.md: Fix Name after ###","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"267bec4ede66398d9cb22a0e96089b0dfb79347d","isMergeCommit":false,"messageTitle":"Delete docs/team/jae.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}}]},{"date":"2024-09-30","commitResults":[{"hash":"c0bb06721e1e77cfb8c6896907ced0b3b294be28","isMergeCommit":true,"messageTitle":"Merge pull request #36 from rxchell/update-readme","messageBody":"Update README page to match project","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"14adc890a2f839556f9962a3d4a9e3e8d067ffd6","isMergeCommit":true,"messageTitle":"Merge pull request #37 from rxchell/update-developer-guide","messageBody":"Update target user, value proposition, and user stories in developer guide","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"bc183b206f0f93a16a3709115a4eb4520844b972","isMergeCommit":false,"messageTitle":"Refractor EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":301,"deletions":164},"other":{"insertions":70,"deletions":57},"test-code":{"insertions":10,"deletions":8}}},{"hash":"743b49e97b5193c4c843fb2c4c7d7fd654cd2d15","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/choiwab/tp into refractor-Edit","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"d4c5b7ffdcb4f2422466ffbc8fb60b83e0e327ce","isMergeCommit":false,"messageTitle":"Refractor EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":10,"deletions":10}}},{"hash":"d4afd64b5b65c2feeda46c9263040494017d1c39","isMergeCommit":false,"messageTitle":"EditPersonCommand.java: fix import order","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":2}}},{"hash":"4396dc0160f787e06d5b40f03bbca890729a856f","isMergeCommit":false,"messageTitle":"Update EditPersonCommandParser.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":61,"deletions":27},"test-code":{"insertions":6,"deletions":159}}}]},{"date":"2024-10-13","commitResults":[{"hash":"1f7f59b028f738d687a9bc9b353a1d2a3693b04a","isMergeCommit":true,"messageTitle":"Merge pull request #61 from jayjay19630/jo-an/create-model-for-appointments","messageBody":"Create model for appointments","fileTypesAndContributionMap":{}},{"hash":"07c817adb7dc2d732280e431a50b9b8cba8897d2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/choiwab/tp into refractor-Edit","messageBody":"","fileTypesAndContributionMap":{}}]}],"zaidansani":[{"date":"2024-09-27","commitResults":[{"hash":"50a5fdffe90d9ac502ac77645eea9f7847af38ba","isMergeCommit":false,"messageTitle":"Update AboutUs page for Zaidan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":8,"deletions":7}}},{"hash":"1e17fe83204a9d19c8f582234a3430401c80645c","isMergeCommit":false,"messageTitle":"Add personal portfolio page for Zaidan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":0}}},{"hash":"a2321b2f79c403b9681d020e4139b25cef4fdd0a","isMergeCommit":false,"messageTitle":"Add personal portfolio page for Zaidan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"057d02361b8860543b0dc57fcffe8cdf54905480","isMergeCommit":false,"messageTitle":"Update portfolio page","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":6}}},{"hash":"eb618235dc5ec261690c16bbc6c2ed06578e0c31","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into update-about","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"dccb975fd4376ab3b65556d3d3d034fc96bfbff5","isMergeCommit":true,"messageTitle":"Merge pull request #27 from Vangmay/update-about","messageBody":"Update aboutus page with Vangmay\u0027s details","fileTypesAndContributionMap":{}},{"hash":"56e5e8a917fdbb938cc994c118015e8b99f5f569","isMergeCommit":true,"messageTitle":"Merge pull request #29 from jayjay19630/jo-an/clean-up-aboutus-page","messageBody":"fix: Cleanup AboutUs page","fileTypesAndContributionMap":{}}]},{"date":"2024-09-30","commitResults":[{"hash":"2bf6a7299997de603ebf684ffda599013e4f2166","isMergeCommit":false,"messageTitle":"Add non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":15,"deletions":2}}}]},{"date":"2024-10-03","commitResults":[{"hash":"7c424b5819f0abf7c67030e824dab9781707f5c5","isMergeCommit":true,"messageTitle":"Merge pull request #40 from jayjay19630/jo-an/add-issue-templates","messageBody":"chore: add Github issue templates","fileTypesAndContributionMap":{}},{"hash":"72d9fa2a93da22656c2478dfbf083bdac2bee9f4","isMergeCommit":false,"messageTitle":"Refactor: DeleteCommand","messageBody":"Two DeleteCommands will exist for next increment.\n\nLet\u0027s\n* refactor all DeleteCommands.\n* add support to parser to take in new command format.\n","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":6},"other":{"insertions":33,"deletions":33},"test-code":{"insertions":4,"deletions":4}}},{"hash":"4e2cc6f50b95874ed58aa468f639bd6dd95ba965","isMergeCommit":false,"messageTitle":"Edit command word for all","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":6},"test-code":{"insertions":2,"deletions":1}}}]},{"date":"2024-10-04","commitResults":[{"hash":"b212a2b1a6bf0bda5d6a2f9127e784bd6d6ddee5","isMergeCommit":false,"messageTitle":"Fix test with new expected input","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":2},"test-code":{"insertions":3,"deletions":3}}}]},{"date":"2024-10-05","commitResults":[{"hash":"49aaa297c8ec01a89d03363ea333757ddfbda2f4","isMergeCommit":true,"messageTitle":"Merge pull request #42 from zaidansani/refactor-delete-command","messageBody":"Refactor delete command","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"6fce1615df07b94d5fb54e08409eac749a3fd7c4","isMergeCommit":true,"messageTitle":"Merge pull request #52 from jayjay19630/feat/create-command-abstractions","messageBody":"Create Command Abstractions","fileTypesAndContributionMap":{}},{"hash":"df2d0c86cf1c236499c92ea38d79075cf9f3e2e9","isMergeCommit":false,"messageTitle":"refactor: clear command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":74,"deletions":8},"test-code":{"insertions":12,"deletions":6}}}]},{"date":"2024-10-12","commitResults":[{"hash":"d068b6111ae21879b1232a57d82ed3281cf8128f","isMergeCommit":true,"messageTitle":"Merge pull request #51 from rxchell/add-personID","messageBody":"Add personId","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"Vangmay":{"docs":6,"functional-code":78,"test-code":14},"rxchell":{"docs":79,"functional-code":97,"test-code":26},"jayjay19630":{"docs":246,"functional-code":1004,"test-code":482},"choiwab":{"docs":10,"functional-code":326,"test-code":41},"zaidansani":{"docs":30,"functional-code":79,"test-code":37}},"authorContributionVariance":{"Vangmay":942.29004,"rxchell":888.9427,"jayjay19630":65145.33,"choiwab":31436.0,"zaidansani":872.47235},"authorDisplayNameMap":{"Vangmay":"CS2103T-W10-2 SACH..GMAY","rxchell":"CS2103T-W10-2 RACH.. JIA","jayjay19630":"CS2103T-W10-2 JO A..O AN","choiwab":"CS2103T-W10-2 CHOI..YEOK","zaidansani":"CS2103T-W10-2 MUHA..SANI"}} diff --git a/AY2425S1-CS2103T-W14-2_tp_master/authorship.json b/AY2425S1-CS2103T-W14-2_tp_master/authorship.json index bd9e8cbb..ef9e11e8 100644 --- a/AY2425S1-CS2103T-W14-2_tp_master/authorship.json +++ b/AY2425S1-CS2103T-W14-2_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W14-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-W14-2/tp/actions)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"BA€ is an address book for salespeople to store sales-related information about their clients.\u003cbr\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"BA€ can...","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"* Consolidate information about clients from multiple sources.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"* Provide an overview of all clients and offers options to visualise information about specific client groups, especially those that they need to prioritise to optimise their sales.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"* This project is based on the **[AddressBook-Level3](https://se-education.org/addressbook-level3)** project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":7,"-":3}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":"### Eliot Snodgrass","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"appleshill"},"content":"\u003cimg src\u003d\"images/appleshill.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"appleshill"},"content":"[[github](https://github.com/appleshill)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"appleshill"},"content":"* Role: Team Lead","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":"### Arvind Natarajan","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":"\u003cimg src\u003d\"images/diegotheexplorar.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":"[[github](https://github.com/DiegoTheExplorar)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":"[[portfolio](www.linkedin.com/in/arvind-natarajan-65aa77290)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":"* Responsibilities: I make sure codebase is well documented","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"valhrd"},"content":"### Valentin Han","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"valhrd"},"content":"\u003cimg src\u003d\"images/valhrd.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"valhrd"},"content":"[[github](http://github.com/valhrd)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"valhrd"},"content":"* Role: Testing","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"valhrd"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"frymash"},"content":"### Isaac Chan","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"frymash"},"content":"\u003cimg src\u003d\"images/frymash.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"frymash"},"content":"[[github](http://github.com/frymash)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"frymash"},"content":"* Role: Code quality","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"frymash"},"content":"* Responsibilities: Looks after code quality, ensures adherence to coding standards, etc.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"RyanWarwick"},"content":"### Ryan Han","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"RyanWarwick"},"content":"\u003cimg src\u003d\"images/github_ryanwarwick.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"RyanWarwick"},"content":"[[github](http://github.com/RyanWarwick)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"RyanWarwick"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"RyanWarwick"},"content":"* Responsibilities: Ensure project deliverables are done on time and in the right format.","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"frymash":5,"RyanWarwick":5,"DiegoTheExplorar":6,"valhrd":5,"-":35,"appleshill":4}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"RyanWarwick"},"content":"* frequently uses contacts for work (business)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"RyanWarwick"},"content":"**Value proposition**:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"RyanWarwick"},"content":"* manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"RyanWarwick"},"content":"* prioritise contacts for scheduling and work efficiency","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"|----------|--------------------------------------------|------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":"| `* * *` | user | add a new person | |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"RyanWarwick"},"content":"| `* *` | user with many persons in the address book | filter a person by tags | locate persons by category without having to go through the entire list|","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"RyanWarwick"},"content":"| `* *` | user with many persons in the address book | export contacts to csv | share and combine address books |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"RyanWarwick"},"content":"| `*` | user with many persons in the address book | import contacts from csv | combine and update existing address books easily |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"| `*` | user with many persons in the address book | sort persons by name | locate a person easily |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"2. AddressBook shows a list of persons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"4. AddressBook deletes the person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"RyanWarwick"},"content":"**Use case: Add a person**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"RyanWarwick"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"RyanWarwick"},"content":"1. User requests to add person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"RyanWarwick"},"content":"2. AddressBook shows a input form for person\u0027s details","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"RyanWarwick"},"content":"3. User enters person details like name, phone number, email, tags etc","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"RyanWarwick"},"content":"4. AddressBook validates user input","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"RyanWarwick"},"content":"5. AddressBook saves the person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"RyanWarwick"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"RyanWarwick"},"content":"* 4a. The user input is invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"RyanWarwick"},"content":" * 4a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"RyanWarwick"},"content":" * 4a2. AddressBook requests for the correct data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"RyanWarwick"},"content":" * 4a3. User enters new data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"RyanWarwick"},"content":" * Steps 4a1-4a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"RyanWarwick"},"content":" * Use case resumes at step 5.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"RyanWarwick"},"content":"**Use case: Filter by tag**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"RyanWarwick"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"RyanWarwick"},"content":"1. User requests to filter persons by tag","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"RyanWarwick"},"content":"2. AddressBook shows a input search bar","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"RyanWarwick"},"content":"3. User enters input related to key or value of a tag","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"RyanWarwick"},"content":"4. AddressBook shows a list of persons with matching tag key or value","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"RyanWarwick"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"RyanWarwick"},"content":"* 4a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"RyanWarwick"},"content":"**Use case: Export to CSV**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"RyanWarwick"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"RyanWarwick"},"content":"1. User requests to export file to CSV","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"RyanWarwick"},"content":"2. AddressBook opens file manager for user to choose destination directory","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"RyanWarwick"},"content":"3. User enters destination directory and file name","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"RyanWarwick"},"content":"4. AddressBook outputs list of persons to CSV file in corresponding destination","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"RyanWarwick"},"content":"5. AddressBook opens destination directory containing CSV file","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"RyanWarwick"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"RyanWarwick"},"content":"* 2a. AddressBook is unable to open file manager.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"RyanWarwick"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"RyanWarwick"},"content":"2. Should work on any _mainstream OS_ without requiring any further installation or additional platform-specific dependencies","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"RyanWarwick"},"content":"3. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"RyanWarwick"},"content":"4. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"RyanWarwick"},"content":"5. Should automatically save changes to the local data file, and it should be able to recover from unexpected shutdowns or power failures without data loss.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"RyanWarwick"},"content":"6. Should have a responsive and intuitive user interface that works well across different screen resolutions (1920 x 1080 or higher).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"RyanWarwick"},"content":"7. Should be easy to use and provide clear instructions and feedback to the user for common tasks like adding, filtering, and exporting contacts.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"RyanWarwick"},"content":"8. Should be designed to accommodate future growth in the number of persons and additional features without major rewriting of code.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"RyanWarwick"},"content":"9. Should not store or transmit sensitive data insecurely.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"RyanWarwick"},"content":"10. Should be modular and easy to test to support automated unit testing.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"RyanWarwick"},"content":".","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"RyanWarwick"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"appleshill"},"content":"* **Command-line Interface (CLI)**: A text-based user interface where the user interacts with the application by typing commands, as opposed to a Graphical User Interface (GUI).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"appleshill"},"content":"* **Typical Usage**: The expected day-to-day usage of the application by the target user, which should not cause significant performance degradation.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"appleshill"},"content":"* **Above-average Typing Speed**: A typing speed that is higher than the average user, allowing the user to input commands and data more efficiently.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"RyanWarwick"},"content":"* **Platform-specific dependencies**: Additional software required to run the application due to differences in Mainstream OS.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"RyanWarwick"},"content":"* **Local data file**: File stored on and only on the user\u0027s computer/device running the application.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"RyanWarwick"},"content":"* **Sensitive Data**: Data in any form (often text) that may harm the user or persons if exposed to unwanted parties (e.g. financial data, credit card info)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"RyanWarwick"},"content":"* **File Manager**: OS-specific software that allows user to view and manage (create, delete etc) files on their computer/device. Often comes pre-installed as part of the OS.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"RyanWarwick"},"content":"* **CSV**: Type of format of file that stores data in an ordered fashion using rows and columns. Often used in third-party spreadsheet software such as Microsoft Excel.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"RyanWarwick"},"content":"* **Tag**: Form of text-based labelling to categorise persons or data for organisation.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"RyanWarwick"},"content":"*{More to be added}*","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"RyanWarwick":87,"-":391,"appleshill":3}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eBA€\u003c/a\u003e","lastModifiedDate":"2024-09-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"valhrd"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103T-W14-2/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"valhrd":1,"-":66}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"valhrd"},"content":"import seedu.address.logic.handler.DuplicatePhoneTagger;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing AddressBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"valhrd"},"content":" new DuplicatePhoneTagger().tagPhoneDuplicates(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping AddressBook ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"valhrd":2,"-":186}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"valhrd"},"content":"import seedu.address.logic.handler.DuplicatePhoneTagger;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"valhrd"},"content":" private final DuplicatePhoneTagger duplicatePhoneTagger \u003d new DuplicatePhoneTagger();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.tagPhoneDuplicates(model);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"valhrd":4,"-":87}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" + PREFIX_FINANCIAL_INFO + \"FINANCIAL INFO\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" + PREFIX_SOCIAL_MEDIA_HANDLE + \"SOCIAL MEDIA HANDLE\\n\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" + PREFIX_FINANCIAL_INFO + \"Annual premium of $1200 \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" + PREFIX_SOCIAL_MEDIA_HANDLE + \"@jdoe3\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"valhrd":1,"-":82,"appleshill":8}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"valhrd":1,"-":69}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" + \"[\" + PREFIX_TAG + \"TAG]\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" + \"[\" + PREFIX_FINANCIAL_INFO + \"FINANCIAL INFO] \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" + \"[\" + PREFIX_SOCIAL_MEDIA_HANDLE + \"SOCIAL MEDIA HANDLE] \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" + \"...\\n\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"appleshill"},"content":" String updatedFinancialInfo \u003d editPersonDescriptor.getFinancialInfo().orElse(personToEdit.getFinancialInfo());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"appleshill"},"content":" String updatedSocialMediaHandle \u003d editPersonDescriptor.getSocialMediaHandle()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"appleshill"},"content":" .orElse(personToEdit.getSocialMediaHandle());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"appleshill"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"appleshill"},"content":" updatedFinancialInfo, updatedSocialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"appleshill"},"content":" private String financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"appleshill"},"content":" private String socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"appleshill"},"content":" setFinancialInfo(toCopy.financialInfo);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"appleshill"},"content":" setSocialMediaHandle(toCopy.socialMediaHandle);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"appleshill"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"appleshill"},"content":" public void setFinancialInfo(String info) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"appleshill"},"content":" this.financialInfo \u003d info;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"appleshill"},"content":" public Optional\u003cString\u003e getFinancialInfo() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"appleshill"},"content":" return Optional.ofNullable(financialInfo);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"appleshill"},"content":" public void setSocialMediaHandle(String handle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"appleshill"},"content":" this.socialMediaHandle \u003d handle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"appleshill"},"content":" public Optional\u003cString\u003e getSocialMediaHandle() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"appleshill"},"content":" return Optional.ofNullable(socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 Objects.equals(financialInfo, otherEditPersonDescriptor.financialInfo)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 Objects.equals(socialMediaHandle, otherEditPersonDescriptor.socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"appleshill"},"content":" .add(\"financial info\", financialInfo)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"appleshill"},"content":" .add(\"social media handle\", socialMediaHandle)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"valhrd":1,"-":238,"appleshill":37}},{"path":"src/main/java/seedu/address/logic/commands/ExportCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"frymash"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"frymash"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"frymash"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"frymash"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"frymash"},"content":" * Exports the address book in a specified format.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"frymash"},"content":" * Currently, BA€ can export the address book as a CSV file.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"frymash"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"frymash"},"content":"public class ExportCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"frymash"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Export: %1$s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"frymash"},"content":" public static final String COMMAND_WORD \u003d \"export\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"frymash"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"frymash"},"content":" + \": Exports the address book in CSV format. \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"frymash"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"frymash"},"content":" + \"format/csv\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"frymash"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d \"Export command not implemented yet\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"frymash"},"content":" private final String format;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"frymash"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"frymash"},"content":" * Constructs a ExportCommand instance (TODO: supplement JavaDoc stub)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"frymash"},"content":" * @param format the file format of the file to be exported (this should be \".csv\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"frymash"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"frymash"},"content":" public ExportCommand(String format) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"frymash"},"content":" requireAllNonNull(format);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"frymash"},"content":" this.format \u003d format;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"frymash"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"frymash"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"frymash"},"content":" throw new CommandException(String.format(MESSAGE_ARGUMENTS, format));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"frymash"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"frymash"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"frymash"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"frymash"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"frymash"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"frymash"},"content":" if (!(other instanceof ExportCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"frymash"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"frymash"},"content":" ExportCommand e \u003d (ExportCommand) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"frymash"},"content":" return format.equals(e.format);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"frymash"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"frymash":52}},{"path":"src/main/java/seedu/address/logic/commands/FilterCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DiegoTheExplorar"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.List;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DiegoTheExplorar"},"content":"/**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DiegoTheExplorar"},"content":" * Filters the contact list based on name and/or tags.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DiegoTheExplorar"},"content":"public class FilterCommand extends Command {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DiegoTheExplorar"},"content":" public static final String COMMAND_WORD \u003d \"filter\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DiegoTheExplorar"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DiegoTheExplorar"},"content":" + \": Filters the contact list by name and/or tags.\\n\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DiegoTheExplorar"},"content":" + \"Parameters: [n/NAME] [t/TAG]\\n\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DiegoTheExplorar"},"content":" + \"Example: \" + COMMAND_WORD + \" n/John t/client\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DiegoTheExplorar"},"content":" public static final String MESSAGE_NO_CONTACT_FOUND \u003d \"No contacts match the filter criteria.\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DiegoTheExplorar"},"content":" private final String name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":" private final String tagName;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DiegoTheExplorar"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":" * Class that handles FilterCommand","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DiegoTheExplorar"},"content":" public FilterCommand(String name, String tagName) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DiegoTheExplorar"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DiegoTheExplorar"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DiegoTheExplorar"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DiegoTheExplorar"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DiegoTheExplorar"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DiegoTheExplorar"},"content":" Predicate\u003cPerson\u003e predicate \u003d person -\u003e {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DiegoTheExplorar"},"content":" boolean nameMatches \u003d name \u003d\u003d null || name.isEmpty()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DiegoTheExplorar"},"content":" || person.getName().toString().toLowerCase().contains(name.toLowerCase());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DiegoTheExplorar"},"content":" boolean tagMatches \u003d tagName \u003d\u003d null || tagName.isEmpty()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DiegoTheExplorar"},"content":" || person.getTags().stream().anyMatch(tag -\u003e tag.tagName.equalsIgnoreCase(tagName));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DiegoTheExplorar"},"content":" return nameMatches","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DiegoTheExplorar"},"content":" \u0026\u0026 tagMatches;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DiegoTheExplorar"},"content":" };","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DiegoTheExplorar"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DiegoTheExplorar"},"content":" List\u003cPerson\u003e filteredList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"DiegoTheExplorar"},"content":" if (filteredList.isEmpty()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DiegoTheExplorar"},"content":" return new CommandResult(MESSAGE_NO_CONTACT_FOUND);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"DiegoTheExplorar"},"content":" return new CommandResult(constructSuccessMessage(this.name, this.tagName));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DiegoTheExplorar"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"DiegoTheExplorar"},"content":" * Dynamically produced the success message based on the name and tag","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"DiegoTheExplorar"},"content":" public static String constructSuccessMessage(String name, String tagName) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DiegoTheExplorar"},"content":" StringBuilder messageBuilder \u003d new StringBuilder(\"Displaying filtered results: \");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DiegoTheExplorar"},"content":" if (name !\u003d null \u0026\u0026 !name.isEmpty()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DiegoTheExplorar"},"content":" messageBuilder.append(\"Name: \").append(name).append(\" \");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DiegoTheExplorar"},"content":" if (tagName !\u003d null \u0026\u0026 !tagName.isEmpty()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"DiegoTheExplorar"},"content":" messageBuilder.append(\"Tag: \").append(tagName).append(\" \");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DiegoTheExplorar"},"content":" return messageBuilder.toString().trim();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DiegoTheExplorar"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DiegoTheExplorar"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DiegoTheExplorar"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"DiegoTheExplorar"},"content":" return true;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"DiegoTheExplorar"},"content":" if (!(other instanceof FilterCommand)) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"DiegoTheExplorar"},"content":" return false;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand otherCommand \u003d (FilterCommand) other;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"DiegoTheExplorar"},"content":" boolean isNameEqual \u003d (name \u003d\u003d null \u0026\u0026 otherCommand.name \u003d\u003d null)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"DiegoTheExplorar"},"content":" || (name !\u003d null \u0026\u0026 name.equals(otherCommand.name));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"DiegoTheExplorar"},"content":" boolean isTagNameEqual \u003d (tagName \u003d\u003d null \u0026\u0026 otherCommand.tagName \u003d\u003d null)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"DiegoTheExplorar"},"content":" || (tagName !\u003d null \u0026\u0026 tagName.equals(otherCommand.tagName));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"DiegoTheExplorar"},"content":" return isNameEqual \u0026\u0026 isTagNameEqual;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"DiegoTheExplorar"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"DiegoTheExplorar"},"content":" public String toString() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"DiegoTheExplorar"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"DiegoTheExplorar"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"DiegoTheExplorar"},"content":" .add(\"tagName\", tagName)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"DiegoTheExplorar"},"content":" .toString();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"DiegoTheExplorar"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":103}},{"path":"src/main/java/seedu/address/logic/handler/DuplicatePhoneTagger.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"valhrd"},"content":"package seedu.address.logic.handler;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"valhrd"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"valhrd"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"valhrd"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"valhrd"},"content":"import java.util.List;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"valhrd"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"valhrd"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"valhrd"},"content":" * Tags people that share the same phone number","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"valhrd"},"content":"public class DuplicatePhoneTagger {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"valhrd"},"content":" public static final String DUPLICATE_PHONE_TAG_NAME \u003d \"DuplicatePhone\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"valhrd"},"content":" private static final Tag DUPLICATE_TAG \u003d new Tag(DUPLICATE_PHONE_TAG_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"valhrd"},"content":" private final HashMap\u003cPhone, Integer\u003e phoneFrequencies \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"valhrd"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"valhrd"},"content":" * Uses the model to update the person list based on duplicate phone numbers","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"valhrd"},"content":" * @param model that represents the current state of the address book","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"valhrd"},"content":" public void tagPhoneDuplicates(Model model) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"valhrd"},"content":" updateFrequenciesOfPhones(persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"valhrd"},"content":" updatePersonsList(model, persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"valhrd"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"valhrd"},"content":" * Counts and stores the frequency of each phone number","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"valhrd"},"content":" * @param persons the list of persons in the address book","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"valhrd"},"content":" public void updateFrequenciesOfPhones(List\u003cPerson\u003e persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"valhrd"},"content":" clearFrequencies();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"valhrd"},"content":" for (Person person : persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"valhrd"},"content":" phoneFrequencies.put(person.getPhone(), phoneFrequencies.getOrDefault(person.getPhone(), 0) + 1);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"valhrd"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"valhrd"},"content":" * Checks if there exists a duplicate phone number","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"valhrd"},"content":" * @return true if there is a duplicate, else false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"valhrd"},"content":" public boolean isDuplicatePresent() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"valhrd"},"content":" for (Phone phone : phoneFrequencies.keySet()) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"valhrd"},"content":" if (isPhoneDuplicate(phone)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"valhrd"},"content":" return true;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"valhrd"},"content":" return false;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"valhrd"},"content":" public boolean isPhoneDuplicate(Phone phone) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"valhrd"},"content":" return phoneFrequencies.getOrDefault(phone, 0) \u003e 1;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"valhrd"},"content":" public void clearFrequencies() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"valhrd"},"content":" phoneFrequencies.clear();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"valhrd"},"content":" private void updatePersonsList(Model model, List\u003cPerson\u003e persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"valhrd"},"content":" for (Person personToUpdate : persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"valhrd"},"content":" Phone phone \u003d personToUpdate.getPhone();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"valhrd"},"content":" boolean isPhoneDuplicate \u003d isPhoneDuplicate(phone);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"valhrd"},"content":" Person updatedPerson \u003d updatePerson(personToUpdate, isPhoneDuplicate);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"valhrd"},"content":" model.setPerson(personToUpdate, updatedPerson);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"valhrd"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"valhrd"},"content":" private Person updatePerson(Person person, boolean isPhoneDuplicate) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"valhrd"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"valhrd"},"content":" Phone phone \u003d person.getPhone();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"valhrd"},"content":" Email email \u003d person.getEmail();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"valhrd"},"content":" Address address \u003d person.getAddress();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"valhrd"},"content":" String financialInfo \u003d person.getFinancialInfo();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"valhrd"},"content":" String socialMediaHandle \u003d person.getSocialMediaHandle();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"valhrd"},"content":" Set\u003cTag\u003e newTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"valhrd"},"content":" newTags.addAll(person.getTags());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"valhrd"},"content":" if (isPhoneDuplicate) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"valhrd"},"content":" newTags.add(DUPLICATE_TAG);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"valhrd"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"valhrd"},"content":" newTags.removeIf(tag -\u003e tag.equals(DUPLICATE_TAG));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"valhrd"},"content":" return new Person(name, phone, email, address, newTags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"valhrd"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"valhrd":96}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" PREFIX_FINANCIAL_INFO, PREFIX_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" // Optional","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" String financialInfo \u003d argMultimap.getValue(PREFIX_FINANCIAL_INFO).orElse(\"\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" String socialMediaHandle \u003d argMultimap.getValue(PREFIX_SOCIAL_MEDIA_HANDLE).orElse(\"\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"-":55,"appleshill":9}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.commands.ExportCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DiegoTheExplorar"},"content":" case FilterCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DiegoTheExplorar"},"content":" return new FilterCommandParser().parse(arguments);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"frymash"},"content":" case ExportCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"frymash"},"content":" return new ExportCommandParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"frymash":4,"DiegoTheExplorar":4,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":" public static final Prefix PREFIX_FINANCIAL_INFO \u003d new Prefix(\"fi/\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"appleshill"},"content":" public static final Prefix PREFIX_SOCIAL_MEDIA_HANDLE \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"frymash"},"content":" public static final Prefix PREFIX_EXPORT_FORMAT \u003d new Prefix(\"format/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"frymash":1,"-":14,"appleshill":2}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"appleshill"},"content":" PREFIX_TAG, PREFIX_FINANCIAL_INFO, PREFIX_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" PREFIX_FINANCIAL_INFO, PREFIX_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" if (argMultimap.getValue(PREFIX_FINANCIAL_INFO).isPresent()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" editPersonDescriptor.setFinancialInfo(","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" ParserUtil.parseFinancialInfo(argMultimap.getValue(PREFIX_FINANCIAL_INFO).get()));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"appleshill"},"content":" if (argMultimap.getValue(PREFIX_SOCIAL_MEDIA_HANDLE).isPresent()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"appleshill"},"content":" editPersonDescriptor.setSocialMediaHandle(","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"appleshill"},"content":" ParserUtil.parseSocialMediaHandle(argMultimap.getValue(PREFIX_SOCIAL_MEDIA_HANDLE).get()));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"-":82,"appleshill":14}},{"path":"src/main/java/seedu/address/logic/parser/ExportCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"frymash"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"frymash"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"frymash"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"frymash"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.commands.ExportCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"frymash"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"frymash"},"content":" * Parses input commands and creates a new ExportCommand object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"frymash"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"frymash"},"content":"public class ExportCommandParser implements Parser\u003cExportCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"frymash"},"content":" private static final Pattern EXPORT_COMMAND_FORMAT \u003d Pattern.compile(\"(?i)(format/(?\u003cformat\u003e\\\\S+))\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"frymash"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"frymash"},"content":" * Parses the given {@code String} of arguments in the context of the ExportCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"frymash"},"content":" * and returns an ExportCommand object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"frymash"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"frymash"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"frymash"},"content":" public ExportCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"frymash"},"content":" final Matcher matcher \u003d EXPORT_COMMAND_FORMAT.matcher(args.trim());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"frymash"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"frymash"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"frymash"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ExportCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"frymash"},"content":" // Extract the format from the input","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"frymash"},"content":" String format \u003d matcher.group(\"format\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"frymash"},"content":" if ((format \u003d\u003d null || format.isEmpty())) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"frymash"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"frymash"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ExportCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"frymash"},"content":" return new ExportCommand(format);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"frymash"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"frymash":39}},{"path":"src/main/java/seedu/address/logic/parser/FilterCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"/**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DiegoTheExplorar"},"content":" * Parses input for filter and creates an instance of FilterCommand","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DiegoTheExplorar"},"content":"public class FilterCommandParser implements Parser\u003cFilterCommand\u003e {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DiegoTheExplorar"},"content":" //regex to filter the input to extract NAME and/or TAG","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DiegoTheExplorar"},"content":" private static final Pattern FILTER_COMMAND_FORMAT \u003d Pattern.compile(\"(?i)(n/(?\u003cname\u003e\\\\S+))?\\\\s*(t/(?\u003ctag\u003e\\\\S+))?\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DiegoTheExplorar"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":" * Parses the given {@code String} of arguments in the context of the FilterCommand","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DiegoTheExplorar"},"content":" * and returns a FilterCommand object for execution.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DiegoTheExplorar"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DiegoTheExplorar"},"content":" public FilterCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":" final Matcher matcher \u003d FILTER_COMMAND_FORMAT.matcher(args.trim());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DiegoTheExplorar"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":" // Extract the name and tag from the input","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":" String name \u003d matcher.group(\"name\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DiegoTheExplorar"},"content":" String tag \u003d matcher.group(\"tag\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DiegoTheExplorar"},"content":" if ((name \u003d\u003d null || name.isEmpty()) \u0026\u0026 (tag \u003d\u003d null || tag.isEmpty())) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DiegoTheExplorar"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DiegoTheExplorar"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DiegoTheExplorar"},"content":" return new FilterCommand(name, tag);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DiegoTheExplorar"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":41}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"appleshill"},"content":" * Parses a {@code String info} into an {@code String financialInfo}.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"appleshill"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"appleshill"},"content":" *","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"appleshill"},"content":" * @throws ParseException if the given {@code String financialInfo} is invalid.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"appleshill"},"content":" public static String parseFinancialInfo(String info) throws ParseException {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"appleshill"},"content":" requireNonNull(info);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"appleshill"},"content":" String trimmedInfo \u003d info.trim();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"appleshill"},"content":" return trimmedInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"appleshill"},"content":" * Parses a {@code String info} into an {@code String socialMediaHandle}.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"appleshill"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"appleshill"},"content":" *","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"appleshill"},"content":" * @throws ParseException if the given {@code String info} is invalid.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"appleshill"},"content":" public static String parseSocialMediaHandle(String info) throws ParseException {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"appleshill"},"content":" requireNonNull(info);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"appleshill"},"content":" String trimmedInfo \u003d info.trim();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"appleshill"},"content":" return trimmedInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"-":124,"appleshill":24}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"appleshill"},"content":" private final String financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"appleshill"},"content":" private final String socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, String financialInfo,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" String socialMediaHandle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" requireAllNonNull(name, phone, email, address, tags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" this.financialInfo \u003d financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" this.socialMediaHandle \u003d socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"appleshill"},"content":" public String getFinancialInfo() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"appleshill"},"content":" return financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"appleshill"},"content":" public String getSocialMediaHandle() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" return socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 financialInfo.equals(otherPerson.financialInfo)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 socialMediaHandle.equals(otherPerson.socialMediaHandle)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"appleshill"},"content":" return Objects.hash(name, phone, email, address, tags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"appleshill"},"content":" .add(\"financialInfo\", financialInfo)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"appleshill"},"content":" .add(\"socialMediaHandle\", socialMediaHandle)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":114,"appleshill":20}},{"path":"src/main/java/seedu/address/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Tag in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}^]+\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":61,"appleshill":1}},{"path":"src/main/java/seedu/address/model/tag/TagField.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"appleshill"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"appleshill"},"content":"/* import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"appleshill"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"public class TagField {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tag field key and value should be alphanumeric\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}+\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"appleshill"},"content":" public final String key;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"appleshill"},"content":" public final String value;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":" public TagField(String key, String value) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":" requireNonNull(key);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"appleshill"},"content":" requireNonNull(value);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"appleshill"},"content":" checkArgument(isValidTagField(key), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"appleshill"},"content":" checkArgument(isValidTagField(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"appleshill"},"content":" this.key \u003d key;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"appleshill"},"content":" this.value \u003d value;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"appleshill"},"content":" public static boolean isValidTagField(String test) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"appleshill"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"appleshill"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"appleshill"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"appleshill"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"appleshill"},"content":" return true;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" if (!(other instanceof TagField)) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" return false;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" TagField otherTagField \u003d (TagField) other;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" return key.equals(otherTagField.key) \u0026\u0026 value.equals(otherTagField.value);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" return (key + value).hashCode();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" public String toString() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"appleshill"},"content":" return key + \":\" + value;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":"} */","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"appleshill":49}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"appleshill"},"content":" getTagSet(\"friends\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"appleshill"},"content":" \"Annual life insurance premium: $1,200\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"appleshill"},"content":" \"alex_yeoh\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"appleshill"},"content":" getTagSet(\"colleagues\", \"friends\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"appleshill"},"content":" \"Income category: $60,000 - $80,000\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":" \"bernice_yu\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" getTagSet(\"neighbours\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" \"Annual auto insurance premium: $800\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" \"charlotte_o\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":" getTagSet(\"family\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" \"Income category: $40,000 - $60,000\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" \"david_li\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" getTagSet(\"classmates\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" \"Annual home insurance premium: $950\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" \"irfan_ibrahim\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" getTagSet(\"colleagues\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" \"Income category: $80,000 - $100,000\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" \"roy_b\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"-":54,"appleshill":18}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" private final String financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" private final String socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"financialInfo\") String financialInfo,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" @JsonProperty(\"socialMediaHandle\") String socialMediaHandle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" this.financialInfo \u003d financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" this.socialMediaHandle \u003d socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"appleshill"},"content":" financialInfo \u003d source.getFinancialInfo();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" socialMediaHandle \u003d source.getSocialMediaHandle();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"appleshill"},"content":" if (financialInfo \u003d\u003d null) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"appleshill"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"financialInfo\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"appleshill"},"content":" final String modelFinancialInfo \u003d financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"appleshill"},"content":" if (socialMediaHandle \u003d\u003d null) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"appleshill"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"socialMediaHandle\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"appleshill"},"content":" final String modelSocialMediaHandle \u003d socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"appleshill"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"appleshill"},"content":" modelFinancialInfo, modelSocialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":107,"appleshill":18}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"valhrd"},"content":"import seedu.address.logic.handler.DuplicatePhoneTagger;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" private Label financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" @FXML","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" private Label socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" @FXML","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"appleshill"},"content":" financialInfo.setText(person.getFinancialInfo());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"appleshill"},"content":" socialMediaHandle.setText(person.getSocialMediaHandle());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"valhrd"},"content":" .forEach(tag -\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"valhrd"},"content":" Label label \u003d new Label(tag.tagName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"valhrd"},"content":" if (tag.tagName.equals(DuplicatePhoneTagger.DUPLICATE_PHONE_TAG_NAME)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"valhrd"},"content":" label.setId(\"duplicate\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"valhrd"},"content":" tags.getChildren().add(label);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"valhrd"},"content":" });","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"valhrd":8,"-":58,"appleshill":6}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"valhrd"},"content":"#tags .label#duplicate {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"valhrd"},"content":" -fx-background-color: #a1ae00;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"valhrd"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"valhrd":4,"-":352}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" \u003cLabel fx:id\u003d\"financialInfo\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$financial info\" /\u003e","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" \u003cLabel fx:id\u003d\"socialMediaHandle\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$socialMediaHandle\" /\u003e","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"-":36,"appleshill":2}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FINANCIAL_INFO_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SOCIAL_MEDIA_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"appleshill"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + FINANCIAL_INFO_DESC_AMY + SOCIAL_MEDIA_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"-":174,"appleshill":3}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" Person validPerson \u003d new PersonBuilder()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"appleshill"},"content":" Person validPerson \u003d new PersonBuilder()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"appleshill"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"-":200,"appleshill":18}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" public static final String VALID_FINANCIAL_INFO_AMY \u003d \"$1200 income\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" public static final String VALID_FINANCIAL_INFO_BOB \u003d \"No income\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" public static final String VALID_SOCIAL_MEDIA_HANDLE_AMY \u003d \"Amy_A\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" public static final String VALID_SOCIAL_MEDIA_HANDLE_BOB \u003d \"Bob_B\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"appleshill"},"content":" public static final String FINANCIAL_INFO_DESC_AMY \u003d \" \" + PREFIX_FINANCIAL_INFO + VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"appleshill"},"content":" public static final String SOCIAL_MEDIA_HANDLE_DESC_AMY \u003d \" \" + PREFIX_SOCIAL_MEDIA_HANDLE","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"appleshill"},"content":" + VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"-":128,"appleshill":9}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", financial info\u003d\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" + editPersonDescriptor.getFinancialInfo().orElse(null) + \", social media handle\u003d\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"appleshill"},"content":" + editPersonDescriptor.getSocialMediaHandle().orElse(null) + \"}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":70,"appleshill":3}},{"path":"src/test/java/seedu/address/logic/commands/ExportCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"frymash"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"frymash"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"frymash"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"frymash"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"frymash"},"content":"import static seedu.address.logic.commands.ExportCommand.MESSAGE_ARGUMENTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"frymash"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"frymash"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"frymash"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"frymash"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"frymash"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"frymash"},"content":"public class ExportCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"frymash"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"frymash"},"content":" public void execute() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"frymash"},"content":" final String format \u003d \"csv\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"frymash"},"content":" assertCommandFailure(new ExportCommand(format), model, String.format(MESSAGE_ARGUMENTS, format));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"frymash"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"frymash"},"content":" final ExportCommand standardCommand \u003d new ExportCommand(\"csv\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"frymash"},"content":" final String differentFormat \u003d \"pdf\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"frymash"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"frymash"},"content":" ExportCommand commandWithSameValues \u003d new ExportCommand(\"csv\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"frymash"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"frymash"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"frymash"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"frymash"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"frymash"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"frymash"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"frymash"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"frymash"},"content":" // different export format -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"frymash"},"content":" assertFalse(standardCommand.equals(new ExportCommand(differentFormat)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"frymash"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"frymash":45}},{"path":"src/test/java/seedu/address/logic/commands/FilterCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DiegoTheExplorar"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DiegoTheExplorar"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DiegoTheExplorar"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DiegoTheExplorar"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DiegoTheExplorar"},"content":"public class FilterCommandTest {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DiegoTheExplorar"},"content":" private Model model;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DiegoTheExplorar"},"content":" @BeforeEach","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":" public void setUp() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DiegoTheExplorar"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":" public void equals() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand filterFirstCommand \u003d new FilterCommand(\"first\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand filterSecondCommand \u003d new FilterCommand(null, \"second\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DiegoTheExplorar"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DiegoTheExplorar"},"content":" assertTrue(filterFirstCommand.equals(filterFirstCommand));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DiegoTheExplorar"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand filterFirstCommandCopy \u003d new FilterCommand(\"first\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DiegoTheExplorar"},"content":" assertTrue(filterFirstCommand.equals(filterFirstCommandCopy));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DiegoTheExplorar"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DiegoTheExplorar"},"content":" assertFalse(filterFirstCommand.equals(1));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DiegoTheExplorar"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DiegoTheExplorar"},"content":" assertFalse(filterFirstCommand.equals(null));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DiegoTheExplorar"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DiegoTheExplorar"},"content":" assertFalse(filterFirstCommand.equals(filterSecondCommand));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case for filtering using name only","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_nameKeyword_personsFound() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.constructSuccessMessage(\"Meier\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(\"Meier\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Arrays.asList(BENSON, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case for filtering using tag only","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_tagKeyword_personsFound() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.constructSuccessMessage(null, \"owesMoney\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(null, \"owesMoney\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Arrays.asList(BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case for fitlering usign both","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_nameAndTagKeywords_personFound() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.constructSuccessMessage(\"Meier\", \"friends\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(\"Meier\", \"friends\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Arrays.asList(BENSON, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case for when there is no one after filtering","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_noMatchingNameOrTag_allPersonsReturned() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.MESSAGE_NO_CONTACT_FOUND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(\"Damith\", \"2103\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case to test parital string fitlering","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_partialNameMatch_personsFound() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.constructSuccessMessage(\"er\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(\"er\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Arrays.asList(BENSON, DANIEL, ELLE), model.getFilteredPersonList());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"DiegoTheExplorar"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand filterCommand \u003d new FilterCommand(\"John\", \"client\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"DiegoTheExplorar"},"content":" String expected \u003d FilterCommand.class.getCanonicalName() + \"{name\u003dJohn, tagName\u003dclient}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expected, filterCommand.toString());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"DiegoTheExplorar"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":102}},{"path":"src/test/java/seedu/address/logic/handler/DuplicatePhoneTaggerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"valhrd"},"content":"package seedu.address.logic.handler;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"valhrd"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"valhrd"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"valhrd"},"content":"import java.util.List;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"valhrd"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"valhrd"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"valhrd"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"valhrd"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"valhrd"},"content":"public class DuplicatePhoneTaggerTest {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_ONE \u003d \"11111111\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_TWO \u003d \"12345678\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_THREE \u003d \"87654321\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_FOUR \u003d \"23232323\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_FIVE \u003d \"32323232\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_SIX \u003d \"45454545\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_SEVEN \u003d \"54545454\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"valhrd"},"content":" private static final Person AIKEN \u003d new PersonBuilder().withName(\"Aiken\").withPhone(TEST_PHONE_ONE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"valhrd"},"content":" .withEmail(\"aiken@gmail.com\").withAddress(\"Kent Ridge MRT\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"valhrd"},"content":" private static final Person ALEX \u003d new PersonBuilder().withName(\"Alex\").withPhone(TEST_PHONE_TWO)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"valhrd"},"content":" .withEmail(\"alex@yahoo.com\").withAddress(\"Minecraft\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"valhrd"},"content":" private static final Person ALICE \u003d new PersonBuilder().withName(\"Alice\").withPhone(TEST_PHONE_THREE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"valhrd"},"content":" .withEmail(\"alice@hotmail.com\").withAddress(\"CAPT\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"valhrd"},"content":" private static final Person ALBERT \u003d new PersonBuilder().withName(\"Albert\").withPhone(TEST_PHONE_FOUR)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"valhrd"},"content":" .withEmail(\"albert@outlook.com\").withAddress(\"PGP\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"valhrd"},"content":" private static final Person ADRIEL \u003d new PersonBuilder().withName(\"Adriel\").withPhone(TEST_PHONE_FIVE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"valhrd"},"content":" .withEmail(\"adriel@gmail.com\").withAddress(\"UTown\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"valhrd"},"content":" private static final Person TAN_AH_KOW \u003d new PersonBuilder().withName(\"Tan Ah Kow\").withPhone(TEST_PHONE_SIX)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"valhrd"},"content":" .withEmail(\"tak@hotmail.com\").withAddress(\"Woodlands MRT\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"valhrd"},"content":" private static final Person BART_BILL \u003d new PersonBuilder().withName(\"Bartholomew Billiams\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"valhrd"},"content":" .withPhone(TEST_PHONE_SEVEN).withEmail(\"barbill@gmail.com\").withAddress(\"United Kingdom\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"valhrd"},"content":" private final DuplicatePhoneTagger duplicatePhoneTagger \u003d new DuplicatePhoneTagger();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"valhrd"},"content":" private final AddressBookBuilder testAB \u003d new AddressBookBuilder();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"valhrd"},"content":" private Model testModel;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"valhrd"},"content":" @BeforeEach","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"valhrd"},"content":" public void setUp() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"valhrd"},"content":" testAB.withPerson(AIKEN)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"valhrd"},"content":" .withPerson(ALEX)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"valhrd"},"content":" .withPerson(ALICE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"valhrd"},"content":" .withPerson(ALBERT)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"valhrd"},"content":" .withPerson(ADRIEL)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"valhrd"},"content":" .withPerson(TAN_AH_KOW)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"valhrd"},"content":" .withPerson(BART_BILL);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"valhrd"},"content":" // Test for identifying no duplicates","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"valhrd"},"content":" public void execute_isDuplicatePresent_noDuplicates() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.updateFrequenciesOfPhones(persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"valhrd"},"content":" assertFalse(duplicatePhoneTagger.isDuplicatePresent());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"valhrd"},"content":" // Test for identifying duplicates","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"valhrd"},"content":" public void execute_isDuplicatePresent_withDuplicates() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"valhrd"},"content":" Person testPerson \u003d new PersonBuilder().withName(\"Aaron\").withPhone(TEST_PHONE_TWO)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"valhrd"},"content":" .withEmail(\"aaron@example.com\").withAddress(\"Kent Ridge MRT\").build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"valhrd"},"content":" testAB.withPerson(testPerson);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.updateFrequenciesOfPhones(persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"valhrd"},"content":" assertTrue(duplicatePhoneTagger.isDuplicatePresent());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"valhrd"},"content":" // Test for identifying correct duplicate","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"valhrd"},"content":" public void identify_correct_duplicate() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"valhrd"},"content":" Person testPerson \u003d new PersonBuilder().withName(\"Aaron\").withPhone(TEST_PHONE_TWO)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"valhrd"},"content":" .withEmail(\"aiken@example.com\").withAddress(\"Kent Ridge MRT\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"valhrd"},"content":" testAB.withPerson(testPerson);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.updateFrequenciesOfPhones(persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"valhrd"},"content":" for (Person person : persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"valhrd"},"content":" if (person.getPhone().equals(new Phone(TEST_PHONE_TWO))) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"valhrd"},"content":" assertTrue(duplicatePhoneTagger.isPhoneDuplicate(person.getPhone()));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"valhrd"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"valhrd"},"content":" assertFalse(duplicatePhoneTagger.isPhoneDuplicate(person.getPhone()));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"valhrd"},"content":" public void execute_tagPhoneDuplicates() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"valhrd"},"content":" Person testPerson \u003d new PersonBuilder().withName(\"Aaron\").withPhone(TEST_PHONE_TWO)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"valhrd"},"content":" .withEmail(\"aaron@example.com\").withAddress(\"Kent Ridge MRT\").build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"valhrd"},"content":" testAB.withPerson(testPerson);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.tagPhoneDuplicates(testModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"valhrd"},"content":" assertTrue(persons","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"valhrd"},"content":" .stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"valhrd"},"content":" .anyMatch(person -\u003e person","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"valhrd"},"content":" .getTags()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"valhrd"},"content":" .stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"valhrd"},"content":" .anyMatch(tag -\u003e tag","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"valhrd"},"content":" .tagName","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"valhrd"},"content":" .equals(DuplicatePhoneTagger.DUPLICATE_PHONE_TAG_NAME))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"valhrd"},"content":" public void execute_tagPhoneDuplicates_withNoDuplicates() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.tagPhoneDuplicates(testModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"valhrd"},"content":" assertFalse(persons","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"valhrd"},"content":" .stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"valhrd"},"content":" .anyMatch(person -\u003e person","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"valhrd"},"content":" .getTags()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"valhrd"},"content":" .stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"valhrd"},"content":" .anyMatch(tag -\u003e tag","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"valhrd"},"content":" .tagName","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"valhrd"},"content":" .equals(DuplicatePhoneTagger.DUPLICATE_PHONE_TAG_NAME))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"valhrd"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"valhrd":135}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"appleshill"},"content":" // Single tag, with financial info and social media handle","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"appleshill"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"some financial info sm/@bob_handle\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"appleshill"},"content":" // Test with whitespace only preamble and all fields present","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"appleshill"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + \" fi/some financial info sm/@bob_handle\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"appleshill"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"appleshill"},"content":" // Multiple tags, with financial info and social media handle","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"some financial info sm/@bob_handle\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"appleshill"},"content":" // Test with multiple tags, financial info, and social media handle","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"appleshill"},"content":" assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"appleshill"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + \" fi/some financial info sm/@bob_handle\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"appleshill"},"content":" // zero tags, no financial info or social media handle","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"appleshill"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().withFinancialInfo(\"\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"-":186,"appleshill":21}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.commands.ExportCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"frymash"},"content":" public void parseCommand_export() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"frymash"},"content":" // TODO: softcode \"format/csv\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"frymash"},"content":" assertTrue(parser.parseCommand(ExportCommand.COMMAND_WORD + \" format/csv\") instanceof ExportCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"frymash"},"content":" public void parseCommand_exportWithValidFormat() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"frymash"},"content":" ExportCommand command \u003d (ExportCommand) parser.parseCommand(ExportCommand.COMMAND_WORD + \" format/csv\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"frymash"},"content":" assertEquals(new ExportCommand(\"csv\"), command);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"frymash"},"content":" public void parseCommand_exportWithInvalidFormat() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"frymash"},"content":" assertThrows(ParseException.class, () -\u003e parser.parseCommand(ExportCommand.COMMAND_WORD + \" foobar\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"frymash":18,"-":101}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FINANCIAL_INFO_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SOCIAL_MEDIA_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"appleshill"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"appleshill"},"content":" + FINANCIAL_INFO_DESC_AMY + SOCIAL_MEDIA_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"appleshill"},"content":" // financial info","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"appleshill"},"content":" userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_FINANCIAL_INFO + VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"appleshill"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"appleshill"},"content":" descriptor.setFinancialInfo(VALID_FINANCIAL_INFO_AMY);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"appleshill"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"appleshill"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"appleshill"},"content":" // social media handle","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"appleshill"},"content":" userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_SOCIAL_MEDIA_HANDLE + VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"appleshill"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"appleshill"},"content":" descriptor.setSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"appleshill"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"appleshill"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"-":206,"appleshill":25}},{"path":"src/test/java/seedu/address/logic/parser/FilterCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DiegoTheExplorar"},"content":"public class FilterCommandParserTest {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DiegoTheExplorar"},"content":" private FilterCommandParser parser \u003d new FilterCommandParser();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test for empty input","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DiegoTheExplorar"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test for varying number of space, 1 input and 2 inputs","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":" public void parse_validArgs_returnsFilterCommand() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DiegoTheExplorar"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand expectedFilterCommand \u003d new FilterCommand(\"Alice\", \"friend\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseSuccess(parser, \"n/Alice t/friend\", expectedFilterCommand);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":" // multiple whitespaces between filters","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseSuccess(parser, \" \\n n/Alice \\n \\t t/friend \\t\", expectedFilterCommand);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":" // only name provided","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DiegoTheExplorar"},"content":" expectedFilterCommand \u003d new FilterCommand(\"Alice\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseSuccess(parser, \"n/Alice\", expectedFilterCommand);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DiegoTheExplorar"},"content":" // only tag provided","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DiegoTheExplorar"},"content":" expectedFilterCommand \u003d new FilterCommand(null, \"friend\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseSuccess(parser, \"t/friend\", expectedFilterCommand);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DiegoTheExplorar"},"content":" //input with flag but no name or tag","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DiegoTheExplorar"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseFailure(parser, \"n/ t/\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DiegoTheExplorar"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DiegoTheExplorar"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":48}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" private static final String VALID_FINANCIAL_INFO \u003d \"Salary: $5000\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" private static final String VALID_SOCIAL_MEDIA_HANDLE \u003d \"@johndoe\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"appleshill"},"content":" public void parseFinancialInfo_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"appleshill"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseFinancialInfo(null));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"appleshill"},"content":" public void parseFinancialInfo_validValueWithoutWhitespace_returnsFinancialInfo() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"appleshill"},"content":" String expectedFinancialInfo \u003d VALID_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedFinancialInfo, ParserUtil.parseFinancialInfo(VALID_FINANCIAL_INFO));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"appleshill"},"content":" public void parseFinancialInfo_validValueWithWhitespace_returnsTrimmedFinancialInfo() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"appleshill"},"content":" String financialInfoWithWhitespace \u003d WHITESPACE + VALID_FINANCIAL_INFO + WHITESPACE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"appleshill"},"content":" String expectedFinancialInfo \u003d VALID_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedFinancialInfo, ParserUtil.parseFinancialInfo(financialInfoWithWhitespace));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"appleshill"},"content":" public void parseSocialMediaHandle_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"appleshill"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSocialMediaHandle(null));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"appleshill"},"content":" public void parseSocialMediaHandle_validValueWithoutWhitespace_returnsSocialMediaHandle() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"appleshill"},"content":" String expectedSocialMediaHandle \u003d VALID_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedSocialMediaHandle, ParserUtil.parseSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"appleshill"},"content":" public void parseSocialMediaHandle_validValueWithWhitespace_returnsTrimmedSocialMediaHandle() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"appleshill"},"content":" String socialMediaHandleWithWhitespace \u003d WHITESPACE + VALID_SOCIAL_MEDIA_HANDLE + WHITESPACE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"appleshill"},"content":" String expectedSocialMediaHandle \u003d VALID_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedSocialMediaHandle, ParserUtil.parseSocialMediaHandle(socialMediaHandleWithWhitespace));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"-":196,"appleshill":38}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"appleshill"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" .withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"appleshill"},"content":" // different financial info -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"appleshill"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withFinancialInfo(VALID_FINANCIAL_INFO_BOB).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"appleshill"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"appleshill"},"content":" // different social media handle -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"appleshill"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_BOB).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"appleshill"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"appleshill"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"appleshill"},"content":" + \", tags\u003d\" + ALICE.getTags() + \", financialInfo\u003d\" + ALICE.getFinancialInfo()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"appleshill"},"content":" + \", socialMediaHandle\u003d\" + ALICE.getSocialMediaHandle() + \"}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"-":96,"appleshill":21}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"appleshill"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"appleshill"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"appleshill"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"appleshill"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"appleshill"},"content":" public void getSamplePersons_returnsCorrectNumberOfPersons() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"appleshill"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"appleshill"},"content":" assertEquals(6, samplePersons.length);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"appleshill"},"content":" public void getSamplePersons_returnsValidPersons() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"appleshill"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"appleshill"},"content":" for (Person person : samplePersons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getName());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getPhone());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getEmail());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getAddress());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getTags());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" public void getSamplePersons_containsExpectedPerson() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"appleshill"},"content":" Person expectedPerson \u003d new Person(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":" new Name(\"Alex Yeoh\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" new Phone(\"87438807\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" SampleDataUtil.getTagSet(\"friends\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" \"Annual life insurance premium: $1,200\",","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" \"alex_yeoh\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" );","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedPerson, samplePersons[0]);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"appleshill":49}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" private static final String VALID_FINANCIAL_INFO \u003d \"Good credit score, low debt\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" private static final String VALID_SOCIAL_MEDIA_HANDLE \u003d \"geoff_345\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"appleshill"},"content":" VALID_TAGS, VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTags,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"appleshill"},"content":" public void toModelType_nullFinancialInfo_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"appleshill"},"content":" VALID_TAGS, null, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"appleshill"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"financialInfo\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"appleshill"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"appleshill"},"content":" public void toModelType_nullSocialMediaHandle_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"appleshill"},"content":" VALID_TAGS, VALID_FINANCIAL_INFO, null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"appleshill"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"socialMediaHandle\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"appleshill"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":101,"appleshill":36}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" descriptor.setFinancialInfo((person.getFinancialInfo()));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" descriptor.setSocialMediaHandle(person.getSocialMediaHandle());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"appleshill"},"content":" * Sets the {@code financialInfo} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"appleshill"},"content":" public EditPersonDescriptorBuilder withFinancialInfo(String info) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"appleshill"},"content":" descriptor.setFinancialInfo(info);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"appleshill"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"appleshill"},"content":" * Sets the {@code socialMediaHandle} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"appleshill"},"content":" public EditPersonDescriptorBuilder withSocialMediaHandle(String handle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"appleshill"},"content":" descriptor.setSocialMediaHandle(handle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"appleshill"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":87,"appleshill":18}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"appleshill"},"content":" public static final String DEFAULT_FINANCIAL_INFO \u003d \"Good credit history\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"appleshill"},"content":" public static final String DEFAULT_SOCIAL_MEDIA_HANDLE \u003d \"alice_p\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"appleshill"},"content":" public static final String DEFAULT_TAG \u003d \"^\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" private String financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" private String socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" tags.add(new Tag(DEFAULT_TAG));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" financialInfo \u003d DEFAULT_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" socialMediaHandle \u003d DEFAULT_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"appleshill"},"content":" financialInfo \u003d personToCopy.getFinancialInfo();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"appleshill"},"content":" socialMediaHandle \u003d personToCopy.getSocialMediaHandle();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"appleshill"},"content":" * Sets the {@code financialInfo} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"appleshill"},"content":" public PersonBuilder withFinancialInfo(String financialInfo) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"appleshill"},"content":" this.financialInfo \u003d financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"appleshill"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"appleshill"},"content":" * Sets the {@code socialMediaHandle} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"appleshill"},"content":" public PersonBuilder withSocialMediaHandle(String socialMediaHandle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"appleshill"},"content":" this.socialMediaHandle \u003d socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"appleshill"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"appleshill"},"content":" return new Person(name, phone, email, address, tags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"-":95,"appleshill":27}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" sb.append(PREFIX_FINANCIAL_INFO + person.getFinancialInfo() + \" \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" sb.append(PREFIX_SOCIAL_MEDIA_HANDLE + person.getSocialMediaHandle() + \" \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"appleshill"},"content":" descriptor.getFinancialInfo().ifPresent(info -\u003e sb.append(PREFIX_FINANCIAL_INFO).append(info).append(\" \"));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"appleshill"},"content":" descriptor.getSocialMediaHandle().ifPresent(handle -\u003e sb.append(PREFIX_SOCIAL_MEDIA_HANDLE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" .append(handle).append(\" \"));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"-":62,"appleshill":7}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Good credit history\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"alice_p\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Moderate debt\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"benson_meier\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"carl_k\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"daniel_m\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"appleshill"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"elle_m\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"appleshill"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"fiona_k\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"george_b\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"appleshill"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"hoon_m\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"appleshill"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"ida_m\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"appleshill"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"appleshill"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"-":67,"appleshill":51}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W14-2/tp/workflows/Java%20CI/badge.svg)](https://github.com/AY2425S1-CS2103T-W14-2/tp/actions)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"BA€ is an address book for salespeople to store sales-related information about their clients.\u003cbr\u003e","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"BA€ can...","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"* Consolidate information about clients from multiple sources.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"* Provide an overview of all clients and offers options to visualise information about specific client groups, especially those that they need to prioritise to optimise their sales.","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"* This project is based on the **[AddressBook-Level3](https://se-education.org/addressbook-level3)** project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":7,"-":3}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"You can reach us at the email `seer[at]comp.nus.edu.sg`","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":"### Eliot Snodgrass","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"appleshill"},"content":"\u003cimg src\u003d\"images/appleshill.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"appleshill"},"content":"[[github](https://github.com/appleshill)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"appleshill"},"content":"* Role: Team Lead","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":"### Arvind Natarajan","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":"\u003cimg src\u003d\"images/diegotheexplorar.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":"[[github](https://github.com/DiegoTheExplorar)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":"[[portfolio](www.linkedin.com/in/arvind-natarajan-65aa77290)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":"* Role: Documentation","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":"* Responsibilities: I make sure codebase is well documented","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"valhrd"},"content":"### Valentin Han","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"valhrd"},"content":"\u003cimg src\u003d\"images/valhrd.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"valhrd"},"content":"[[github](http://github.com/valhrd)] [[portfolio](team/johndoe.md)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"valhrd"},"content":"* Role: Testing","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"valhrd"},"content":"* Responsibilities: Ensures the testing of the project is done properly and on time.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"frymash"},"content":"### Isaac Chan","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"frymash"},"content":"\u003cimg src\u003d\"images/frymash.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"frymash"},"content":"[[github](http://github.com/frymash)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"frymash"},"content":"* Role: Code quality","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"frymash"},"content":"* Responsibilities: Looks after code quality, ensures adherence to coding standards, etc.","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"RyanWarwick"},"content":"### Ryan Han","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"RyanWarwick"},"content":"\u003cimg src\u003d\"images/github_ryanwarwick.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"RyanWarwick"},"content":"[[github](http://github.com/RyanWarwick)]","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"[[portfolio](team/johndoe.md)]","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"RyanWarwick"},"content":"* Role: Deliverables and deadlines","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"RyanWarwick"},"content":"* Responsibilities: Ensure project deliverables are done on time and in the right format.","lastModifiedDate":"2024-09-28","isFullCredit":false}],"authorContributionMap":{"frymash":5,"RyanWarwick":5,"DiegoTheExplorar":6,"valhrd":5,"-":35,"appleshill":4}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# AB-3 Developer Guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"The ***Architecture Diagram*** given above explains the high-level design of the App.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"**`Main`** (consisting of classes [`Main`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/Main.java) and [`MainApp`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"* At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"* At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"* [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"* [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"The *Sequence Diagram* below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"* defines its *API* in an `interface` with the same name as the Component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"The **API** of this component is specified in [`Ui.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/Ui.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `PersonListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"* executes user commands using the `Logic` component.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"* listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"* keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component, as it displays `Person` object residing in the `Model`.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"**API** : [`Logic.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/logic/Logic.java)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"1. The command can communicate with the `Model` when it is executed (e.g. to delete a person).\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"1. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"* When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"* All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"**API** : [`Model.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/model/Model.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"* stores the address book data i.e., all `Person` objects (which are contained in a `UniquePersonList` object).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"* stores the currently \u0027selected\u0027 `Person` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cPerson\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"* stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"* does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Person` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Person` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"**API** : [`Storage.java`](https://github.com/se-edu/addressbook-level3/tree/master/src/main/java/seedu/address/storage/Storage.java)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"* can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"* inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"* depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2021-07-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `seedu.address.commons` package.","lastModifiedDate":"2024-07-17","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"* `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"Step 2. The user executes `delete 5` command to delete the 5th person in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"Step 3. The user executes `add n/David …​` to add a new person. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"Step 4. The user now decides that adding the person was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"* **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" * Pros: Easy to implement.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" * Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"* **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" * Pros: Will use less memory (e.g. for `delete`, just save the person being deleted).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" * Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"* [Documentation guide](Documentation.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":"* [Testing guide](Testing.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"* [Logging guide](Logging.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"* [Configuration guide](Configuration.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":"* [DevOps guide](DevOps.md)","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"* has a need to manage a significant number of contacts","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":"* prefer desktop apps over other types","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":"* can type fast","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":"* prefers typing to mouse interactions","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":"* is reasonably comfortable using CLI apps","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"RyanWarwick"},"content":"* frequently uses contacts for work (business)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"RyanWarwick"},"content":"**Value proposition**:","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"RyanWarwick"},"content":"* manage contacts faster than a typical mouse/GUI driven app","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"RyanWarwick"},"content":"* prioritise contacts for scheduling and work efficiency","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":"| Priority | As a …​ | I want to …​ | So that I can…​ |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"|----------|--------------------------------------------|------------------------------|------------------------------------------------------------------------|","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"| `* * *` | new user | see usage instructions | refer to instructions when I forget how to use the App |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":"| `* * *` | user | add a new person | |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":"| `* * *` | user | delete a person | remove entries that I no longer need |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"| `* * *` | user | find a person by name | locate details of persons without having to go through the entire list |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"| `* *` | user | hide private contact details | minimize chance of someone else seeing them by accident |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"RyanWarwick"},"content":"| `* *` | user with many persons in the address book | filter a person by tags | locate persons by category without having to go through the entire list|","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"RyanWarwick"},"content":"| `* *` | user with many persons in the address book | export contacts to csv | share and combine address books |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"RyanWarwick"},"content":"| `*` | user with many persons in the address book | import contacts from csv | combine and update existing address books easily |","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"| `*` | user with many persons in the address book | sort persons by name | locate a person easily |","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":"(For all use cases below, the **System** is the `AddressBook` and the **Actor** is the `user`, unless specified otherwise)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"**Use case: Delete a person**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"**MSS**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"1. User requests to list persons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"2. AddressBook shows a list of persons","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"3. User requests to delete a specific person in the list","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"4. AddressBook deletes the person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"**Extensions**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"* 2a. The list is empty.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" Use case ends.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"* 3a. The given index is invalid.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" * 3a1. AddressBook shows an error message.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":" Use case resumes at step 2.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"RyanWarwick"},"content":"**Use case: Add a person**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"RyanWarwick"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"RyanWarwick"},"content":"1. User requests to add person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"RyanWarwick"},"content":"2. AddressBook shows a input form for person\u0027s details","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"RyanWarwick"},"content":"3. User enters person details like name, phone number, email, tags etc","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"RyanWarwick"},"content":"4. AddressBook validates user input","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"RyanWarwick"},"content":"5. AddressBook saves the person","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"RyanWarwick"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"RyanWarwick"},"content":"* 4a. The user input is invalid.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"RyanWarwick"},"content":" * 4a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"RyanWarwick"},"content":" * 4a2. AddressBook requests for the correct data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"RyanWarwick"},"content":" * 4a3. User enters new data.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"RyanWarwick"},"content":" * Steps 4a1-4a2 are repeated until the data entered are correct.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"RyanWarwick"},"content":" * Use case resumes at step 5.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"RyanWarwick"},"content":"**Use case: Filter by tag**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"RyanWarwick"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"RyanWarwick"},"content":"1. User requests to filter persons by tag","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"RyanWarwick"},"content":"2. AddressBook shows a input search bar","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"RyanWarwick"},"content":"3. User enters input related to key or value of a tag","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"RyanWarwick"},"content":"4. AddressBook shows a list of persons with matching tag key or value","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"RyanWarwick"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"RyanWarwick"},"content":"* 4a. The list is empty.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"RyanWarwick"},"content":"**Use case: Export to CSV**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"RyanWarwick"},"content":"**MSS**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"RyanWarwick"},"content":"1. User requests to export file to CSV","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"RyanWarwick"},"content":"2. AddressBook opens file manager for user to choose destination directory","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"RyanWarwick"},"content":"3. User enters destination directory and file name","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"RyanWarwick"},"content":"4. AddressBook outputs list of persons to CSV file in corresponding destination","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"RyanWarwick"},"content":"5. AddressBook opens destination directory containing CSV file","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"RyanWarwick"},"content":"**Extensions**","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"RyanWarwick"},"content":"* 2a. AddressBook is unable to open file manager.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"RyanWarwick"},"content":" * 2a1. AddressBook shows an error message.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"RyanWarwick"},"content":" Use case ends.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"RyanWarwick"},"content":"","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"RyanWarwick"},"content":"2. Should work on any _mainstream OS_ without requiring any further installation or additional platform-specific dependencies","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"RyanWarwick"},"content":"3. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"RyanWarwick"},"content":"4. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"RyanWarwick"},"content":"5. Should automatically save changes to the local data file, and it should be able to recover from unexpected shutdowns or power failures without data loss.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"RyanWarwick"},"content":"6. Should have a responsive and intuitive user interface that works well across different screen resolutions (1920 x 1080 or higher).","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"RyanWarwick"},"content":"7. Should be easy to use and provide clear instructions and feedback to the user for common tasks like adding, filtering, and exporting contacts.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"RyanWarwick"},"content":"8. Should be designed to accommodate future growth in the number of persons and additional features without major rewriting of code.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"RyanWarwick"},"content":"9. Should not store or transmit sensitive data insecurely.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"RyanWarwick"},"content":"10. Should be modular and easy to test to support automated unit testing.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"-"},"content":"*{More to be added}*","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"RyanWarwick"},"content":".","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"-"},"content":"* **Mainstream OS**: Windows, Linux, Unix, MacOS","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"RyanWarwick"},"content":"* **Private contact detail**: A contact detail that is not meant to be shared with others.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"appleshill"},"content":"* **Command-line Interface (CLI)**: A text-based user interface where the user interacts with the application by typing commands, as opposed to a Graphical User Interface (GUI).","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"appleshill"},"content":"* **Typical Usage**: The expected day-to-day usage of the application by the target user, which should not cause significant performance degradation.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"appleshill"},"content":"* **Above-average Typing Speed**: A typing speed that is higher than the average user, allowing the user to input commands and data more efficiently.","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"RyanWarwick"},"content":"* **Platform-specific dependencies**: Additional software required to run the application due to differences in Mainstream OS.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"RyanWarwick"},"content":"* **Local data file**: File stored on and only on the user\u0027s computer/device running the application.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"RyanWarwick"},"content":"* **Sensitive Data**: Data in any form (often text) that may harm the user or persons if exposed to unwanted parties (e.g. financial data, credit card info)","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"RyanWarwick"},"content":"* **File Manager**: OS-specific software that allows user to view and manage (create, delete etc) files on their computer/device. Often comes pre-installed as part of the OS.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"RyanWarwick"},"content":"* **CSV**: Type of format of file that stores data in an ordered fashion using rows and columns. Often used in third-party spreadsheet software such as Microsoft Excel.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"RyanWarwick"},"content":"* **Tag**: Form of text-based labelling to categorise persons or data for organisation.","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"RyanWarwick"},"content":"*{More to be added}*","lastModifiedDate":"2024-10-03","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"-"},"content":"testers are expected to do more *exploratory* testing.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"-"},"content":" 1. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"-"},"content":"1. Saving window preferences","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"-"},"content":" 1. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"-"},"content":"### Deleting a person","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"-"},"content":"1. Deleting a person while all persons are being shown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"-"},"content":" 1. Prerequisites: List all persons using the `list` command. Multiple persons in the list.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"-"},"content":" 1. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"-"},"content":" 1. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"-"},"content":" Expected: No person is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"-"},"content":" 1. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"-"},"content":"1. _{ more test cases …​ }_","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"RyanWarwick":87,"-":391,"appleshill":3}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eBA€\u003c/a\u003e","lastModifiedDate":"2024-09-14","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-09-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"valhrd"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/AY2425S1-CS2103T-W14-2/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-09-28","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"valhrd":1,"-":66}},{"path":"src/main/java/seedu/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Config;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.Version;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ConfigUtil;","lastModifiedDate":"2016-10-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.Logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.LogicManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"valhrd"},"content":"import seedu.address.logic.handler.DuplicatePhoneTagger;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.storage.AddressBookStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.storage.UserPrefsStorage;","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.ui.Ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.ui.UiManager;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final Version VERSION \u003d new Version(0, 2, 2, true);","lastModifiedDate":"2023-08-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing AddressBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"valhrd"},"content":" new DuplicatePhoneTagger().tagPhoneDuplicates(model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping AddressBook ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"valhrd":2,"-":186}},{"path":"src/main/java/seedu/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"valhrd"},"content":"import seedu.address.logic.handler.DuplicatePhoneTagger;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.AddressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.storage.Storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"valhrd"},"content":" private final DuplicatePhoneTagger duplicatePhoneTagger \u003d new DuplicatePhoneTagger();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.tagPhoneDuplicates(model);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return model.getFilteredPersonList();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"valhrd":4,"-":87}},{"path":"src/main/java/seedu/address/logic/commands/AddCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Adds a person to the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class AddCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a person to the address book. \"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"PHONE \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"EMAIL \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"ADDRESS \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" + PREFIX_FINANCIAL_INFO + \"FINANCIAL INFO\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" + PREFIX_SOCIAL_MEDIA_HANDLE + \"SOCIAL MEDIA HANDLE\\n\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"98765432 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johnd@example.com \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + PREFIX_ADDRESS + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" + PREFIX_TAG + \"owesMoney \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" + PREFIX_FINANCIAL_INFO + \"Annual premium of $1200 \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" + PREFIX_SOCIAL_MEDIA_HANDLE + \"@jdoe3\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New person added: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private final Person toAdd;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates an AddCommand to add the specified {@code Person}","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public AddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" toAdd \u003d person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" if (model.hasPerson(toAdd)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" model.addPerson(toAdd);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!(other instanceof AddCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" AddCommand otherAddCommand \u003d (AddCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" return toAdd.equals(otherAddCommand.toAdd);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"valhrd":1,"-":82,"appleshill":8}},{"path":"src/main/java/seedu/address/logic/commands/DeleteCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Deletes a person identified using it\u0027s displayed index from the address book.","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class DeleteCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \": Deletes the person identified by the index number used in the displayed person list.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DELETE_PERSON_SUCCESS \u003d \"Deleted Person: %1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public DeleteCommand(Index targetIndex) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Person personToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" model.deletePerson(personToDelete);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, Messages.format(personToDelete)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (!(other instanceof DeleteCommand)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" DeleteCommand otherDeleteCommand \u003d (DeleteCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return targetIndex.equals(otherDeleteCommand.targetIndex);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"valhrd":1,"-":69}},{"path":"src/main/java/seedu/address/logic/commands/EditCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.CollectionUtil;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Edits the details of an existing person in the address book.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"public class EditCommand extends Command {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the person identified \"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" + \"by the index number used in the displayed person list. \"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_PHONE + \"PHONE] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_EMAIL + \"EMAIL] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_ADDRESS + \"ADDRESS] \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" + \"[\" + PREFIX_TAG + \"TAG]\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" + \"[\" + PREFIX_FINANCIAL_INFO + \"FINANCIAL INFO] \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" + \"[\" + PREFIX_SOCIAL_MEDIA_HANDLE + \"SOCIAL MEDIA HANDLE] \"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" + \"...\\n\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" + PREFIX_PHONE + \"91234567 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" + PREFIX_EMAIL + \"johndoe@example.com\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public static final String MESSAGE_EDIT_PERSON_SUCCESS \u003d \"Edited Person: %1$s\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_PERSON \u003d \"This person already exists in the address book.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" private final EditPersonDescriptor editPersonDescriptor;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * @param index of the person in the filtered person list to edit","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * @param editPersonDescriptor details to edit the person with","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" requireNonNull(editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" this.editPersonDescriptor \u003d new EditPersonDescriptor(editPersonDescriptor);","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e lastShownList \u003d model.getFilteredPersonList();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" Person personToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Person editedPerson \u003d createEditedPerson(personToEdit, editPersonDescriptor);","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" if (!personToEdit.isSamePerson(editedPerson) \u0026\u0026 model.hasPerson(editedPerson)) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" throw new CommandException(MESSAGE_DUPLICATE_PERSON);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" model.setPerson(personToEdit, editedPerson);","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, Messages.format(editedPerson)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Creates and returns a {@code Person} with the details of {@code personToEdit}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * edited with {@code editPersonDescriptor}.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assert personToEdit !\u003d null;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" Name updatedName \u003d editPersonDescriptor.getName().orElse(personToEdit.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Phone updatedPhone \u003d editPersonDescriptor.getPhone().orElse(personToEdit.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Email updatedEmail \u003d editPersonDescriptor.getEmail().orElse(personToEdit.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Address updatedAddress \u003d editPersonDescriptor.getAddress().orElse(personToEdit.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e updatedTags \u003d editPersonDescriptor.getTags().orElse(personToEdit.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"appleshill"},"content":" String updatedFinancialInfo \u003d editPersonDescriptor.getFinancialInfo().orElse(personToEdit.getFinancialInfo());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"appleshill"},"content":" String updatedSocialMediaHandle \u003d editPersonDescriptor.getSocialMediaHandle()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"appleshill"},"content":" .orElse(personToEdit.getSocialMediaHandle());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"appleshill"},"content":" return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"appleshill"},"content":" updatedFinancialInfo, updatedSocialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" if (!(other instanceof EditCommand)) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" EditCommand otherEditCommand \u003d (EditCommand) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" return index.equals(otherEditCommand.index)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" \u0026\u0026 editPersonDescriptor.equals(otherEditCommand.editPersonDescriptor);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" .add(\"editPersonDescriptor\", editPersonDescriptor)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Stores the details to edit the person with. Each non-empty field value will replace the","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * corresponding field value of the person.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" public static class EditPersonDescriptor {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"appleshill"},"content":" private String financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"appleshill"},"content":" private String socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public EditPersonDescriptor() {}","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" public EditPersonDescriptor(EditPersonDescriptor toCopy) {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" setPhone(toCopy.phone);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" setEmail(toCopy.email);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" setAddress(toCopy.address);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"appleshill"},"content":" setFinancialInfo(toCopy.financialInfo);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"appleshill"},"content":" setSocialMediaHandle(toCopy.socialMediaHandle);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"appleshill"},"content":" return CollectionUtil.isAnyNonNull(name, phone, email, address, tags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void setPhone(Phone phone) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" public Optional\u003cPhone\u003e getPhone() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" return Optional.ofNullable(phone);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" public void setEmail(Email email) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" public Optional\u003cEmail\u003e getEmail() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" return Optional.ofNullable(email);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public void setAddress(Address address) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" public Optional\u003cAddress\u003e getAddress() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" return Optional.ofNullable(address);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"appleshill"},"content":" public void setFinancialInfo(String info) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"appleshill"},"content":" this.financialInfo \u003d info;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"appleshill"},"content":" public Optional\u003cString\u003e getFinancialInfo() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"appleshill"},"content":" return Optional.ofNullable(financialInfo);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"appleshill"},"content":" public void setSocialMediaHandle(String handle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"appleshill"},"content":" this.socialMediaHandle \u003d handle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"appleshill"},"content":" public Optional\u003cString\u003e getSocialMediaHandle() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"appleshill"},"content":" return Optional.ofNullable(socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":" if (!(other instanceof EditPersonDescriptor)) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":" EditPersonDescriptor otherEditPersonDescriptor \u003d (EditPersonDescriptor) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":" return Objects.equals(name, otherEditPersonDescriptor.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(phone, otherEditPersonDescriptor.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(email, otherEditPersonDescriptor.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":" \u0026\u0026 Objects.equals(address, otherEditPersonDescriptor.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 Objects.equals(tags, otherEditPersonDescriptor.tags)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 Objects.equals(financialInfo, otherEditPersonDescriptor.financialInfo)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 Objects.equals(socialMediaHandle, otherEditPersonDescriptor.socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"appleshill"},"content":" .add(\"financial info\", financialInfo)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"appleshill"},"content":" .add(\"social media handle\", socialMediaHandle)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"valhrd":1,"-":238,"appleshill":37}},{"path":"src/main/java/seedu/address/logic/commands/ExportCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"frymash"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"frymash"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"frymash"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"frymash"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"frymash"},"content":" * Exports the address book in a specified format.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"frymash"},"content":" * Currently, BA€ can export the address book as a CSV file.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"frymash"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"frymash"},"content":"public class ExportCommand extends Command {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"frymash"},"content":" public static final String MESSAGE_ARGUMENTS \u003d \"Export: %1$s\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"frymash"},"content":" public static final String COMMAND_WORD \u003d \"export\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"frymash"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"frymash"},"content":" + \": Exports the address book in CSV format. \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"frymash"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"frymash"},"content":" + \"format/csv\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"frymash"},"content":" public static final String MESSAGE_NOT_IMPLEMENTED_YET \u003d \"Export command not implemented yet\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"frymash"},"content":" private final String format;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"frymash"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"frymash"},"content":" * Constructs a ExportCommand instance (TODO: supplement JavaDoc stub)","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"frymash"},"content":" * @param format the file format of the file to be exported (this should be \".csv\")","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"frymash"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"frymash"},"content":" public ExportCommand(String format) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"frymash"},"content":" requireAllNonNull(format);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"frymash"},"content":" this.format \u003d format;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"frymash"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"frymash"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"frymash"},"content":" throw new CommandException(String.format(MESSAGE_ARGUMENTS, format));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"frymash"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"frymash"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"frymash"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"frymash"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"frymash"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"frymash"},"content":" if (!(other instanceof ExportCommand)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"frymash"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"frymash"},"content":" ExportCommand e \u003d (ExportCommand) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"frymash"},"content":" return format.equals(e.format);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"frymash"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"frymash":52}},{"path":"src/main/java/seedu/address/logic/commands/FilterCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DiegoTheExplorar"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.List;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DiegoTheExplorar"},"content":"/**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DiegoTheExplorar"},"content":" * Filters the contact list based on name and/or tags.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DiegoTheExplorar"},"content":"public class FilterCommand extends Command {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DiegoTheExplorar"},"content":" public static final String COMMAND_WORD \u003d \"filter\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DiegoTheExplorar"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DiegoTheExplorar"},"content":" + \": Filters the contact list by name and/or tags.\\n\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DiegoTheExplorar"},"content":" + \"Parameters: [n/NAME] [t/TAG]\\n\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DiegoTheExplorar"},"content":" + \"Example: \" + COMMAND_WORD + \" n/John t/client\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DiegoTheExplorar"},"content":" public static final String MESSAGE_NO_CONTACT_FOUND \u003d \"No contacts match the filter criteria.\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DiegoTheExplorar"},"content":" private final String name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":" private final String tagName;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DiegoTheExplorar"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":" * Class that handles FilterCommand","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DiegoTheExplorar"},"content":" public FilterCommand(String name, String tagName) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DiegoTheExplorar"},"content":" this.name \u003d name;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DiegoTheExplorar"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DiegoTheExplorar"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DiegoTheExplorar"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DiegoTheExplorar"},"content":" requireNonNull(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DiegoTheExplorar"},"content":" Predicate\u003cPerson\u003e predicate \u003d person -\u003e {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DiegoTheExplorar"},"content":" boolean nameMatches \u003d name \u003d\u003d null || name.isEmpty()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DiegoTheExplorar"},"content":" || person.getName().toString().toLowerCase().contains(name.toLowerCase());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DiegoTheExplorar"},"content":" boolean tagMatches \u003d tagName \u003d\u003d null || tagName.isEmpty()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DiegoTheExplorar"},"content":" || person.getTags().stream().anyMatch(tag -\u003e tag.tagName.equalsIgnoreCase(tagName));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DiegoTheExplorar"},"content":" return nameMatches","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DiegoTheExplorar"},"content":" \u0026\u0026 tagMatches;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DiegoTheExplorar"},"content":" };","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DiegoTheExplorar"},"content":" model.updateFilteredPersonList(predicate);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DiegoTheExplorar"},"content":" List\u003cPerson\u003e filteredList \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"DiegoTheExplorar"},"content":" if (filteredList.isEmpty()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DiegoTheExplorar"},"content":" return new CommandResult(MESSAGE_NO_CONTACT_FOUND);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"DiegoTheExplorar"},"content":" return new CommandResult(constructSuccessMessage(this.name, this.tagName));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DiegoTheExplorar"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"DiegoTheExplorar"},"content":" * Dynamically produced the success message based on the name and tag","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"DiegoTheExplorar"},"content":" public static String constructSuccessMessage(String name, String tagName) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DiegoTheExplorar"},"content":" StringBuilder messageBuilder \u003d new StringBuilder(\"Displaying filtered results: \");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DiegoTheExplorar"},"content":" if (name !\u003d null \u0026\u0026 !name.isEmpty()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DiegoTheExplorar"},"content":" messageBuilder.append(\"Name: \").append(name).append(\" \");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DiegoTheExplorar"},"content":" if (tagName !\u003d null \u0026\u0026 !tagName.isEmpty()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"DiegoTheExplorar"},"content":" messageBuilder.append(\"Tag: \").append(tagName).append(\" \");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DiegoTheExplorar"},"content":" return messageBuilder.toString().trim();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DiegoTheExplorar"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DiegoTheExplorar"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DiegoTheExplorar"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"DiegoTheExplorar"},"content":" return true;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"DiegoTheExplorar"},"content":" if (!(other instanceof FilterCommand)) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"DiegoTheExplorar"},"content":" return false;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand otherCommand \u003d (FilterCommand) other;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"DiegoTheExplorar"},"content":" boolean isNameEqual \u003d (name \u003d\u003d null \u0026\u0026 otherCommand.name \u003d\u003d null)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"DiegoTheExplorar"},"content":" || (name !\u003d null \u0026\u0026 name.equals(otherCommand.name));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"DiegoTheExplorar"},"content":" boolean isTagNameEqual \u003d (tagName \u003d\u003d null \u0026\u0026 otherCommand.tagName \u003d\u003d null)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"DiegoTheExplorar"},"content":" || (tagName !\u003d null \u0026\u0026 tagName.equals(otherCommand.tagName));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"DiegoTheExplorar"},"content":" return isNameEqual \u0026\u0026 isTagNameEqual;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"DiegoTheExplorar"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"DiegoTheExplorar"},"content":" public String toString() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"DiegoTheExplorar"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"DiegoTheExplorar"},"content":" .add(\"name\", name)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"DiegoTheExplorar"},"content":" .add(\"tagName\", tagName)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"DiegoTheExplorar"},"content":" .toString();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"DiegoTheExplorar"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":103}},{"path":"src/main/java/seedu/address/logic/handler/DuplicatePhoneTagger.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"valhrd"},"content":"package seedu.address.logic.handler;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"valhrd"},"content":"import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"valhrd"},"content":"import java.util.HashMap;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"valhrd"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"valhrd"},"content":"import java.util.List;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"valhrd"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"valhrd"},"content":"/**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"valhrd"},"content":" * Tags people that share the same phone number","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"valhrd"},"content":"public class DuplicatePhoneTagger {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"valhrd"},"content":" public static final String DUPLICATE_PHONE_TAG_NAME \u003d \"DuplicatePhone\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"valhrd"},"content":" private static final Tag DUPLICATE_TAG \u003d new Tag(DUPLICATE_PHONE_TAG_NAME);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"valhrd"},"content":" private final HashMap\u003cPhone, Integer\u003e phoneFrequencies \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"valhrd"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"valhrd"},"content":" * Uses the model to update the person list based on duplicate phone numbers","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"valhrd"},"content":" * @param model that represents the current state of the address book","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"valhrd"},"content":" public void tagPhoneDuplicates(Model model) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d model.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"valhrd"},"content":" updateFrequenciesOfPhones(persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"valhrd"},"content":" updatePersonsList(model, persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"valhrd"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"valhrd"},"content":" * Counts and stores the frequency of each phone number","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"valhrd"},"content":" * @param persons the list of persons in the address book","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"valhrd"},"content":" public void updateFrequenciesOfPhones(List\u003cPerson\u003e persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"valhrd"},"content":" clearFrequencies();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"valhrd"},"content":" for (Person person : persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"valhrd"},"content":" phoneFrequencies.put(person.getPhone(), phoneFrequencies.getOrDefault(person.getPhone(), 0) + 1);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"valhrd"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"valhrd"},"content":" * Checks if there exists a duplicate phone number","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"valhrd"},"content":" * @return true if there is a duplicate, else false","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"valhrd"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"valhrd"},"content":" public boolean isDuplicatePresent() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"valhrd"},"content":" for (Phone phone : phoneFrequencies.keySet()) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"valhrd"},"content":" if (isPhoneDuplicate(phone)) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"valhrd"},"content":" return true;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"valhrd"},"content":" return false;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"valhrd"},"content":" public boolean isPhoneDuplicate(Phone phone) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"valhrd"},"content":" return phoneFrequencies.getOrDefault(phone, 0) \u003e 1;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"valhrd"},"content":" public void clearFrequencies() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"valhrd"},"content":" phoneFrequencies.clear();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"valhrd"},"content":" private void updatePersonsList(Model model, List\u003cPerson\u003e persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"valhrd"},"content":" for (Person personToUpdate : persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"valhrd"},"content":" Phone phone \u003d personToUpdate.getPhone();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"valhrd"},"content":" boolean isPhoneDuplicate \u003d isPhoneDuplicate(phone);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"valhrd"},"content":" Person updatedPerson \u003d updatePerson(personToUpdate, isPhoneDuplicate);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"valhrd"},"content":" model.setPerson(personToUpdate, updatedPerson);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"valhrd"},"content":" model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"valhrd"},"content":" private Person updatePerson(Person person, boolean isPhoneDuplicate) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"valhrd"},"content":" Name name \u003d person.getName();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"valhrd"},"content":" Phone phone \u003d person.getPhone();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"valhrd"},"content":" Email email \u003d person.getEmail();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"valhrd"},"content":" Address address \u003d person.getAddress();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"valhrd"},"content":" String financialInfo \u003d person.getFinancialInfo();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"valhrd"},"content":" String socialMediaHandle \u003d person.getSocialMediaHandle();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"valhrd"},"content":" Set\u003cTag\u003e newTags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"valhrd"},"content":" newTags.addAll(person.getTags());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"valhrd"},"content":" if (isPhoneDuplicate) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"valhrd"},"content":" newTags.add(DUPLICATE_TAG);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"valhrd"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"valhrd"},"content":" newTags.removeIf(tag -\u003e tag.equals(DUPLICATE_TAG));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"valhrd"},"content":" return new Person(name, phone, email, address, newTags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"valhrd"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"valhrd":96}},{"path":"src/main/java/seedu/address/logic/parser/AddCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new AddCommand object","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddCommandParser implements Parser\u003cAddCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the AddCommand","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an AddCommand object for execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public AddCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" PREFIX_FINANCIAL_INFO, PREFIX_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL)","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Phone phone \u003d ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" Email email \u003d ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Address address \u003d ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" // Optional","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" String financialInfo \u003d argMultimap.getValue(PREFIX_FINANCIAL_INFO).orElse(\"\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" String socialMediaHandle \u003d argMultimap.getValue(PREFIX_SOCIAL_MEDIA_HANDLE).orElse(\"\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" Person person \u003d new Person(name, phone, email, address, tagList, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return new AddCommand(person);","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"-":55,"appleshill":9}},{"path":"src/main/java/seedu/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.LogsCenter;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.Command;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.commands.ExportCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" case AddCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return new AddCommandParser().parse(arguments);","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" case EditCommand.COMMAND_WORD:","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return new EditCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" case DeleteCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new DeleteCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" case FindCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return new FindCommandParser().parse(arguments);","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DiegoTheExplorar"},"content":" case FilterCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DiegoTheExplorar"},"content":" return new FilterCommandParser().parse(arguments);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" case ListCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ListCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"frymash"},"content":" case ExportCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"frymash"},"content":" return new ExportCommandParser().parse(arguments);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"frymash":4,"DiegoTheExplorar":4,"-":86}},{"path":"src/main/java/seedu/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_PHONE \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_EMAIL \u003d new Prefix(\"e/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_ADDRESS \u003d new Prefix(\"a/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":" public static final Prefix PREFIX_FINANCIAL_INFO \u003d new Prefix(\"fi/\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"appleshill"},"content":" public static final Prefix PREFIX_SOCIAL_MEDIA_HANDLE \u003d new Prefix(\"s/\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"frymash"},"content":" public static final Prefix PREFIX_EXPORT_FORMAT \u003d new Prefix(\"format/\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"frymash":1,"-":14,"appleshill":2}},{"path":"src/main/java/seedu/address/logic/parser/EditCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses input arguments and creates a new EditCommand object","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"public class EditCommandParser implements Parser\u003cEditCommand\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * Parses the given {@code String} of arguments in the context of the EditCommand","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * and returns an EditCommand object for execution.","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * @throws ParseException if the user input does not conform the expected format","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public EditCommand parse(String args) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"appleshill"},"content":" PREFIX_TAG, PREFIX_FINANCIAL_INFO, PREFIX_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" PREFIX_FINANCIAL_INFO, PREFIX_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_PHONE).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()));","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" if (argMultimap.getValue(PREFIX_FINANCIAL_INFO).isPresent()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" editPersonDescriptor.setFinancialInfo(","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" ParserUtil.parseFinancialInfo(argMultimap.getValue(PREFIX_FINANCIAL_INFO).get()));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"appleshill"},"content":" if (argMultimap.getValue(PREFIX_SOCIAL_MEDIA_HANDLE).isPresent()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"appleshill"},"content":" editPersonDescriptor.setSocialMediaHandle(","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"appleshill"},"content":" ParserUtil.parseSocialMediaHandle(argMultimap.getValue(PREFIX_SOCIAL_MEDIA_HANDLE).get()));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" if (!editPersonDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" throw new ParseException(EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new EditCommand(index, editPersonDescriptor);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"-":82,"appleshill":14}},{"path":"src/main/java/seedu/address/logic/parser/ExportCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"frymash"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"frymash"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"frymash"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"frymash"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.commands.ExportCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"frymash"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"frymash"},"content":" * Parses input commands and creates a new ExportCommand object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"frymash"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"frymash"},"content":"public class ExportCommandParser implements Parser\u003cExportCommand\u003e {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"frymash"},"content":" private static final Pattern EXPORT_COMMAND_FORMAT \u003d Pattern.compile(\"(?i)(format/(?\u003cformat\u003e\\\\S+))\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"frymash"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"frymash"},"content":" * Parses the given {@code String} of arguments in the context of the ExportCommand","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"frymash"},"content":" * and returns an ExportCommand object for execution.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"frymash"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"frymash"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"frymash"},"content":" public ExportCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"frymash"},"content":" final Matcher matcher \u003d EXPORT_COMMAND_FORMAT.matcher(args.trim());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"frymash"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"frymash"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"frymash"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ExportCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"frymash"},"content":" // Extract the format from the input","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"frymash"},"content":" String format \u003d matcher.group(\"format\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"frymash"},"content":" if ((format \u003d\u003d null || format.isEmpty())) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"frymash"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"frymash"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, ExportCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"frymash"},"content":" return new ExportCommand(format);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"frymash"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"frymash":39}},{"path":"src/main/java/seedu/address/logic/parser/FilterCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"/**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DiegoTheExplorar"},"content":" * Parses input for filter and creates an instance of FilterCommand","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DiegoTheExplorar"},"content":"public class FilterCommandParser implements Parser\u003cFilterCommand\u003e {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DiegoTheExplorar"},"content":" //regex to filter the input to extract NAME and/or TAG","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DiegoTheExplorar"},"content":" private static final Pattern FILTER_COMMAND_FORMAT \u003d Pattern.compile(\"(?i)(n/(?\u003cname\u003e\\\\S+))?\\\\s*(t/(?\u003ctag\u003e\\\\S+))?\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DiegoTheExplorar"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":" * Parses the given {@code String} of arguments in the context of the FilterCommand","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DiegoTheExplorar"},"content":" * and returns a FilterCommand object for execution.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DiegoTheExplorar"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DiegoTheExplorar"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DiegoTheExplorar"},"content":" public FilterCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":" final Matcher matcher \u003d FILTER_COMMAND_FORMAT.matcher(args.trim());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DiegoTheExplorar"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":" // Extract the name and tag from the input","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":" String name \u003d matcher.group(\"name\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DiegoTheExplorar"},"content":" String tag \u003d matcher.group(\"tag\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DiegoTheExplorar"},"content":" if ((name \u003d\u003d null || name.isEmpty()) \u0026\u0026 (tag \u003d\u003d null || tag.isEmpty())) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DiegoTheExplorar"},"content":" throw new ParseException(","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DiegoTheExplorar"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DiegoTheExplorar"},"content":" return new FilterCommand(name, tag);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DiegoTheExplorar"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":41}},{"path":"src/main/java/seedu/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.StringUtil;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Parses a {@code String phone} into a {@code Phone}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code phone} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static Phone parsePhone(String phone) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" requireNonNull(phone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" String trimmedPhone \u003d phone.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(trimmedPhone)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" throw new ParseException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new Phone(trimmedPhone);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Parses a {@code String address} into an {@code Address}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code address} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public static Address parseAddress(String address) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" requireNonNull(address);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" String trimmedAddress \u003d address.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(trimmedAddress)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" throw new ParseException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return new Address(trimmedAddress);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Parses a {@code String email} into an {@code Email}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code email} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public static Email parseEmail(String email) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" requireNonNull(email);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" String trimmedEmail \u003d email.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(trimmedEmail)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new ParseException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return new Email(trimmedEmail);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"appleshill"},"content":" * Parses a {@code String info} into an {@code String financialInfo}.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"appleshill"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"appleshill"},"content":" *","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"appleshill"},"content":" * @throws ParseException if the given {@code String financialInfo} is invalid.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"appleshill"},"content":" public static String parseFinancialInfo(String info) throws ParseException {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"appleshill"},"content":" requireNonNull(info);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"appleshill"},"content":" String trimmedInfo \u003d info.trim();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"appleshill"},"content":" return trimmedInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"appleshill"},"content":" * Parses a {@code String info} into an {@code String socialMediaHandle}.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"appleshill"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"appleshill"},"content":" *","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"appleshill"},"content":" * @throws ParseException if the given {@code String info} is invalid.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"appleshill"},"content":" public static String parseSocialMediaHandle(String info) throws ParseException {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"appleshill"},"content":" requireNonNull(info);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"appleshill"},"content":" String trimmedInfo \u003d info.trim();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"appleshill"},"content":" return trimmedInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"-":124,"appleshill":24}},{"path":"src/main/java/seedu/address/model/person/Person.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.commons.util.ToStringBuilder;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Represents a Person in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class Person {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private final Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Address address;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"appleshill"},"content":" private final String financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"appleshill"},"content":" private final String socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" public Person(Name name, Phone phone, Email email, Address address, Set\u003cTag\u003e tags, String financialInfo,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" String socialMediaHandle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" requireAllNonNull(name, phone, email, address, tags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" this.financialInfo \u003d financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" this.socialMediaHandle \u003d socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public Phone getPhone() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public Email getEmail() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public Address getAddress() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"appleshill"},"content":" public String getFinancialInfo() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"appleshill"},"content":" return financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"appleshill"},"content":" public String getSocialMediaHandle() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" return socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same name.","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * This defines a weaker notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public boolean isSamePerson(Person otherPerson) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (otherPerson \u003d\u003d this) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" return otherPerson !\u003d null","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" \u0026\u0026 otherPerson.getName().equals(getName());","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * Returns true if both persons have the same identity and data fields.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * This defines a stronger notion of equality between two persons.","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" if (!(other instanceof Person)) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" Person otherPerson \u003d (Person) other;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return name.equals(otherPerson.name)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" \u0026\u0026 phone.equals(otherPerson.phone)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" \u0026\u0026 email.equals(otherPerson.email)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" \u0026\u0026 address.equals(otherPerson.address)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 financialInfo.equals(otherPerson.financialInfo)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"appleshill"},"content":" \u0026\u0026 socialMediaHandle.equals(otherPerson.socialMediaHandle)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" \u0026\u0026 tags.equals(otherPerson.tags);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"appleshill"},"content":" return Objects.hash(name, phone, email, address, tags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"phone\", phone)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" .add(\"email\", email)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .add(\"address\", address)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"appleshill"},"content":" .add(\"financialInfo\", financialInfo)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"appleshill"},"content":" .add(\"socialMediaHandle\", socialMediaHandle)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":114,"appleshill":20}},{"path":"src/main/java/seedu/address/model/tag/Tag.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Tag in the address book.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; name is valid as declared in {@link #isValidTagName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Tag {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tags names should be alphanumeric\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}^]+\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public final String tagName;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Constructs a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @param tagName A valid tag name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public Tag(String tagName) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" requireNonNull(tagName);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" checkArgument(isValidTagName(tagName), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" this.tagName \u003d tagName;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid tag name.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static boolean isValidTagName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!(other instanceof Tag)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" Tag otherTag \u003d (Tag) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return tagName.equals(otherTag.tagName);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return tagName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * Format state as text for viewing.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return \u0027[\u0027 + tagName + \u0027]\u0027;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"-":61,"appleshill":1}},{"path":"src/main/java/seedu/address/model/tag/TagField.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"appleshill"},"content":"package seedu.address.model.tag;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"appleshill"},"content":"/* import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"appleshill"},"content":"import static seedu.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"public class TagField {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Tag field key and value should be alphanumeric\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":" public static final String VALIDATION_REGEX \u003d \"\\\\p{Alnum}+\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"appleshill"},"content":" public final String key;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"appleshill"},"content":" public final String value;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":" public TagField(String key, String value) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":" requireNonNull(key);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"appleshill"},"content":" requireNonNull(value);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"appleshill"},"content":" checkArgument(isValidTagField(key), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"appleshill"},"content":" checkArgument(isValidTagField(value), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"appleshill"},"content":" this.key \u003d key;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"appleshill"},"content":" this.value \u003d value;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"appleshill"},"content":" public static boolean isValidTagField(String test) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"appleshill"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"appleshill"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"appleshill"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"appleshill"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"appleshill"},"content":" return true;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" if (!(other instanceof TagField)) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" return false;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" TagField otherTagField \u003d (TagField) other;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" return key.equals(otherTagField.key) \u0026\u0026 value.equals(otherTagField.value);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" return (key + value).hashCode();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" @Override","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" public String toString() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"appleshill"},"content":" return key + \":\" + value;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":"} */","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"appleshill":49}},{"path":"src/main/java/seedu/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.util;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static Person[] getSamplePersons() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return new Person[] {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" new Person(new Name(\"Alex Yeoh\"), new Phone(\"87438807\"), new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"appleshill"},"content":" getTagSet(\"friends\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"appleshill"},"content":" \"Annual life insurance premium: $1,200\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"appleshill"},"content":" \"alex_yeoh\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" new Person(new Name(\"Bernice Yu\"), new Phone(\"99272758\"), new Email(\"berniceyu@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" new Address(\"Blk 30 Lorong 3 Serangoon Gardens, #07-18\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"appleshill"},"content":" getTagSet(\"colleagues\", \"friends\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"appleshill"},"content":" \"Income category: $60,000 - $80,000\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":" \"bernice_yu\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" new Person(new Name(\"Charlotte Oliveiro\"), new Phone(\"93210283\"), new Email(\"charlotte@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new Address(\"Blk 11 Ang Mo Kio Street 74, #11-04\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" getTagSet(\"neighbours\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" \"Annual auto insurance premium: $800\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" \"charlotte_o\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" new Person(new Name(\"David Li\"), new Phone(\"91031282\"), new Email(\"lidavid@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" new Address(\"Blk 436 Serangoon Gardens Street 26, #16-43\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":" getTagSet(\"family\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" \"Income category: $40,000 - $60,000\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" \"david_li\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" new Person(new Name(\"Irfan Ibrahim\"), new Phone(\"92492021\"), new Email(\"irfan@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" new Address(\"Blk 47 Tampines Street 20, #17-35\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" getTagSet(\"classmates\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" \"Annual home insurance premium: $950\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" \"irfan_ibrahim\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" new Person(new Name(\"Roy Balakrishnan\"), new Phone(\"92624417\"), new Email(\"royb@example.com\"),","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" new Address(\"Blk 45 Aljunied Street 85, #11-31\"),","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" getTagSet(\"colleagues\"),","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" \"Income category: $80,000 - $100,000\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" \"roy_b\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" for (Person samplePerson : getSamplePersons()) {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" sampleAb.addPerson(samplePerson);","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"-":54,"appleshill":18}},{"path":"src/main/java/seedu/address/storage/JsonAdaptedPerson.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Jackson-friendly version of {@link Person}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"class JsonAdaptedPerson {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Person\u0027s %s field is missing!\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final String phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final String email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final String address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" private final String financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" private final String socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Constructs a {@code JsonAdaptedPerson} with the given person details.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(@JsonProperty(\"name\") String name, @JsonProperty(\"phone\") String phone,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @JsonProperty(\"email\") String email, @JsonProperty(\"address\") String address,","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags, @JsonProperty(\"financialInfo\") String financialInfo,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" @JsonProperty(\"socialMediaHandle\") String socialMediaHandle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this.phone \u003d phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" this.email \u003d email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" this.address \u003d address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" this.financialInfo \u003d financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" this.socialMediaHandle \u003d socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * Converts a given {@code Person} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public JsonAdaptedPerson(Person source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" phone \u003d source.getPhone().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" email \u003d source.getEmail().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" address \u003d source.getAddress().value;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"appleshill"},"content":" financialInfo \u003d source.getFinancialInfo();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" socialMediaHandle \u003d source.getSocialMediaHandle();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * Converts this Jackson-friendly adapted person object into the model\u0027s {@code Person} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted person.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public Person toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" final List\u003cTag\u003e personTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" personTags.add(tag.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" if (phone \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!Phone.isValidPhone(phone)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" final Phone modelPhone \u003d new Phone(phone);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" if (email \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" if (!Email.isValidEmail(email)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" final Email modelEmail \u003d new Email(email);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" if (address \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" if (!Address.isValidAddress(address)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" final Address modelAddress \u003d new Address(address);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(personTags);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"appleshill"},"content":" if (financialInfo \u003d\u003d null) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"appleshill"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"financialInfo\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"appleshill"},"content":" final String modelFinancialInfo \u003d financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"appleshill"},"content":" if (socialMediaHandle \u003d\u003d null) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"appleshill"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, \"socialMediaHandle\"));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"appleshill"},"content":" final String modelSocialMediaHandle \u003d socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"appleshill"},"content":" return new Person(modelName, modelPhone, modelEmail, modelAddress, modelTags,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"appleshill"},"content":" modelFinancialInfo, modelSocialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":107,"appleshill":18}},{"path":"src/main/java/seedu/address/ui/PersonCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.ui;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"valhrd"},"content":"import seedu.address.logic.handler.DuplicatePhoneTagger;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * An UI component that displays information of a {@code Person}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class PersonCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"PersonListCard.fxml\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public final Person person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Label phone;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private Label address;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private Label email;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" private Label financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" @FXML","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" private Label socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" @FXML","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Creates a {@code PersonCode} with the given {@code Person} and index to display.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonCard(Person person, int displayedIndex) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" name.setText(person.getName().fullName);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" phone.setText(person.getPhone().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" address.setText(person.getAddress().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" email.setText(person.getEmail().value);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"appleshill"},"content":" financialInfo.setText(person.getFinancialInfo());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"appleshill"},"content":" socialMediaHandle.setText(person.getSocialMediaHandle());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" person.getTags().stream()","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"valhrd"},"content":" .forEach(tag -\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"valhrd"},"content":" Label label \u003d new Label(tag.tagName);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"valhrd"},"content":" if (tag.tagName.equals(DuplicatePhoneTagger.DUPLICATE_PHONE_TAG_NAME)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"valhrd"},"content":" label.setId(\"duplicate\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"valhrd"},"content":" tags.getChildren().add(label);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"valhrd"},"content":" });","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"valhrd":8,"-":58,"appleshill":6}},{"path":"src/main/resources/view/CommandBox.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"appleshill"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.TextField?\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"appleshill"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003cStackPane styleClass\u003d\"stack-pane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":" \u003cVBox spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"appleshill"},"content":" \u003cLabel text\u003d\" Enter a command below:\" styleClass\u003d\"command-label\"/\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"appleshill"},"content":" \u003cTextField fx:id\u003d\"commandTextField\" onAction\u003d\"#handleCommandEntered\" styleClass\u003d\"blue-text-field\"/\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"appleshill"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c/StackPane\u003e","lastModifiedDate":"2017-06-22","isFullCredit":false}],"authorContributionMap":{"-":7,"appleshill":6}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"appleshill"},"content":"/* #commandTextField {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"appleshill"},"content":"} */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"appleshill"},"content":".blue-text-field {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"appleshill"},"content":" -fx-background-color: rgba(0, 0, 51, 0.3);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"appleshill"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"appleshill"},"content":" -fx-highlight-text-fill: white;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"appleshill"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"appleshill"},"content":" -fx-padding: 5 10 5 10; /* Top Right Bottom Left */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"appleshill"},"content":" -fx-border-width: 1;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"appleshill"},"content":" -fx-border-radius: 3;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"appleshill"},"content":" -fx-background-radius: 3;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"appleshill"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"appleshill"},"content":".blue-text-field:focused {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"appleshill"},"content":" -fx-background-color: rgba(0, 0, 102, 0.35);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"appleshill"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"appleshill"},"content":".command-label {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"appleshill"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"appleshill"},"content":" -fx-text-fill: white;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"appleshill"},"content":" -fx-padding: 0 0 5 0;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"appleshill"},"content":" -fx-letter-spacing: 0.1em;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"-"},"content":"#filterField, #personListPanel, #personWebpage {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"appleshill"},"content":" -fx-vgap: 9;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"appleshill"},"content":" -fx-background-color: #ff9d00;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"appleshill"},"content":" -fx-padding: 4 4 4 4;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"appleshill"},"content":" -fx-border-radius: 5;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"appleshill"},"content":" -fx-background-radius: 5;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"appleshill"},"content":" -fx-margin: 9 0 9 0;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"valhrd"},"content":"#tags .label#duplicate {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"valhrd"},"content":" -fx-background-color: #a1ae00;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"valhrd"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"appleshill"},"content":".app-name-container {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"appleshill"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"appleshill"},"content":" -fx-padding: 5 10 5 10;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"appleshill"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"appleshill"},"content":".app-name {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"appleshill"},"content":" -fx-font-size: 42px !important;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"appleshill"},"content":" -fx-font-weight: bold !important;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"appleshill"},"content":" -fx-text-fill: white !important;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"appleshill"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"appleshill"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"appleshill"},"content":".app-name .text {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"appleshill"},"content":" -fx-fill: white !important;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"appleshill"},"content":" -fx-font-size: 42px !important;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"appleshill"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"appleshill"},"content":".app-name HBox Text.euro {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"appleshill"},"content":" -fx-fill: #4a86e8 !important;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"appleshill"},"content":" -fx-font-size: 42px !important;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"valhrd":4,"-":345,"appleshill":50}},{"path":"src/main/resources/view/HelpWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Button?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"appleshill"},"content":"\u003cfx:root resizable\u003d\"false\" title\u003d\"Help\" type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/help_icon.png\" /\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@HelpWindow.css\" /\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-08-28","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cHBox alignment\u003d\"CENTER\" fx:id\u003d\"helpMessageContainer\"\u003e","lastModifiedDate":"2022-01-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cchildren\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"helpMessage\" text\u003d\"Label\"\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cInsets right\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cButton fx:id\u003d\"copyButton\" mnemonicParsing\u003d\"false\" onAction\u003d\"#copyUrl\" text\u003d\"Copy URL\"\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cHBox.margin\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cInsets left\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/HBox.margin\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" \u003c/Button\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003c/children\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003copaqueInsets\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/opaqueInsets\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cInsets bottom\u003d\"10.0\" left\u003d\"5.0\" right\u003d\"10.0\" top\u003d\"5.0\" /\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-12-01","isFullCredit":false}],"authorContributionMap":{"-":43,"appleshill":2}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.SplitPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"appleshill"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"appleshill"},"content":"\u003c?import javafx.scene.text.Text?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"appleshill"},"content":" title\u003d\"BA€\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"appleshill"},"content":" \u003cImage url\u003d\"@/images/address_book_33.png\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"appleshill"},"content":" \u003cHBox styleClass\u003d\"app-name-container\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"appleshill"},"content":" \u003cLabel styleClass\u003d\"app-name\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":" \u003cgraphic\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" \u003cHBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" \u003cLabel text\u003d\"BA\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" \u003cText styleClass\u003d\"euro\" text\u003d\"€\" fill\u003d\"#4a86e8\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" \u003c/graphic\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" \u003c/Label\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"appleshill"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Filter\"\u003e \u003c!--call necessary function--\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" text\u003d\"Filter by Name\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" text\u003d\"Filter by Tag\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"appleshill"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Sort\"\u003e \u003c!--call necessary function--\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" text\u003d\"Sort by Name\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" text\u003d\"Sort by Tag\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Export\"\u003e \u003c!--call necessary function--\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"appleshill"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" text\u003d\"Export to CSV\" /\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"appleshill"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" \u003cVBox fx:id\u003d\"personList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"personListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"-":57,"appleshill":26}},{"path":"src/main/resources/view/PersonListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"phone\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$phone\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"address\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$address\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"email\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$email\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" \u003cLabel fx:id\u003d\"financialInfo\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$financial info\" /\u003e","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" \u003cLabel fx:id\u003d\"socialMediaHandle\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$socialMediaHandle\" /\u003e","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"-":36,"appleshill":2}},{"path":"src/main/resources/view/StatusBarFooter.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003cGridPane styleClass\u003d\"status-bar\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" /\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":" \u003cHBox styleClass\u003d\"status-bar\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\" spacing\u003d\"5\"\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":" \u003cLabel text\u003d\"Contacts source:\" styleClass\u003d\"status-label\"/\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"appleshill"},"content":" \u003cLabel fx:id\u003d\"saveLocationStatus\" styleClass\u003d\"status-value\" HBox.hgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"appleshill"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"\u003c/GridPane\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false}],"authorContributionMap":{"-":11,"appleshill":6}},{"path":"src/test/java/seedu/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FINANCIAL_INFO_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SOCIAL_MEDIA_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.CommandResult;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import seedu.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import seedu.address.storage.StorageManager;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String listCommand \u003d ListCommand.COMMAND_WORD;","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertCommandSuccess(listCommand, ListCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredPersonList().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" String addCommand \u003d AddCommand.COMMAND_WORD + NAME_DESC_AMY + PHONE_DESC_AMY","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"appleshill"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + FINANCIAL_INFO_DESC_AMY + SOCIAL_MEDIA_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().build();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" expectedModel.addPerson(expectedPerson);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"-":174,"appleshill":3}},{"path":"src/test/java/seedu/address/logic/commands/AddCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.GuiSettings;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"public class AddCommandTest {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void constructor_nullPerson_throwsNullPointerException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddCommand(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void execute_personAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ModelStubAcceptingPersonAdded modelStub \u003d new ModelStubAcceptingPersonAdded();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" Person validPerson \u003d new PersonBuilder()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d new AddCommand(validPerson).execute(modelStub);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, Messages.format(validPerson)),","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertEquals(Arrays.asList(validPerson), modelStub.personsAdded);","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_duplicatePerson_throwsCommandException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"appleshill"},"content":" Person validPerson \u003d new PersonBuilder()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(validPerson);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" ModelStub modelStub \u003d new ModelStubWithPerson(validPerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, AddCommand.MESSAGE_DUPLICATE_PERSON, () -\u003e addCommand.execute(modelStub));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" Person alice \u003d new PersonBuilder().withName(\"Alice\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"appleshill"},"content":" Person bob \u003d new PersonBuilder().withName(\"Bob\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" AddCommand addAliceCommand \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" AddCommand addBobCommand \u003d new AddCommand(bob);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" AddCommand addAliceCommandCopy \u003d new AddCommand(alice);","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" AddCommand addCommand \u003d new AddCommand(ALICE);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" String expected \u003d AddCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertEquals(expected, addCommand.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void deletePerson(Person target) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public void setPerson(Person target, Person editedPerson) {","lastModifiedDate":"2018-08-17","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" public ObservableList\u003cPerson\u003e getFilteredPersonList() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" public void updateFilteredPersonList(Predicate\u003cPerson\u003e predicate) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" * A Model stub that contains a single person.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" private class ModelStubWithPerson extends ModelStub {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" private final Person person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" ModelStubWithPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" this.person \u003d person;","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" return this.person.isSamePerson(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" * A Model stub that always accept the person being added.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" private class ModelStubAcceptingPersonAdded extends ModelStub {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" final ArrayList\u003cPerson\u003e personsAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public boolean hasPerson(Person person) {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" return personsAdded.stream().anyMatch(person::isSamePerson);","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" public void addPerson(Person person) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" requireNonNull(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" personsAdded.add(person);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"-":200,"appleshill":18}},{"path":"src/test/java/seedu/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_AMY \u003d \"11111111\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_PHONE_BOB \u003d \"22222222\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_AMY \u003d \"amy@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final String VALID_EMAIL_BOB \u003d \"bob@example.com\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_AMY \u003d \"Block 312, Amy Street 1\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String VALID_ADDRESS_BOB \u003d \"Block 123, Bobby Street 3\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" public static final String VALID_FINANCIAL_INFO_AMY \u003d \"$1200 income\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" public static final String VALID_FINANCIAL_INFO_BOB \u003d \"No income\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" public static final String VALID_SOCIAL_MEDIA_HANDLE_AMY \u003d \"Amy_A\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" public static final String VALID_SOCIAL_MEDIA_HANDLE_BOB \u003d \"Bob_B\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_AMY \u003d \" \" + PREFIX_PHONE + VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public static final String PHONE_DESC_BOB \u003d \" \" + PREFIX_PHONE + VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_AMY \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public static final String EMAIL_DESC_BOB \u003d \" \" + PREFIX_EMAIL + VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_AMY \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String ADDRESS_DESC_BOB \u003d \" \" + PREFIX_ADDRESS + VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"appleshill"},"content":" public static final String FINANCIAL_INFO_DESC_AMY \u003d \" \" + PREFIX_FINANCIAL_INFO + VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"appleshill"},"content":" public static final String SOCIAL_MEDIA_HANDLE_DESC_AMY \u003d \" \" + PREFIX_SOCIAL_MEDIA_HANDLE","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"appleshill"},"content":" + VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public static final String INVALID_PHONE_DESC \u003d \" \" + PREFIX_PHONE + \"911a\"; // \u0027a\u0027 not allowed in phones","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public static final String INVALID_EMAIL_DESC \u003d \" \" + PREFIX_EMAIL + \"bob!yahoo\"; // missing \u0027@\u0027 symbol","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public static final String INVALID_ADDRESS_DESC \u003d \" \" + PREFIX_ADDRESS; // empty string not allowed for addresses","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public static final EditCommand.EditPersonDescriptor DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" DESC_AMY \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" DESC_BOB \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * - the address book, filtered person list and selected person in {@code actualModel} remain unchanged","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" List\u003cPerson\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredPersonList());","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredPersonList());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show only the person at the given {@code targetIndex} in the","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public static void showPersonAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredPersonList().size());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" Person person \u003d model.getFilteredPersonList().get(targetIndex.getZeroBased());","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" final String[] splitName \u003d person.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertEquals(1, model.getFilteredPersonList().size());","lastModifiedDate":"2018-02-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"-":128,"appleshill":9}},{"path":"src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorTest {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptorWithSameValues \u003d new EditPersonDescriptor(DESC_AMY);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" EditPersonDescriptor editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" editedAmy \u003d new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" EditPersonDescriptor editPersonDescriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" String expected \u003d EditPersonDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getName().orElse(null) + \", phone\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getPhone().orElse(null) + \", email\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getEmail().orElse(null) + \", address\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" + editPersonDescriptor.getAddress().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" + editPersonDescriptor.getTags().orElse(null) + \", financial info\u003d\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" + editPersonDescriptor.getFinancialInfo().orElse(null) + \", social media handle\u003d\"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"appleshill"},"content":" + editPersonDescriptor.getSocialMediaHandle().orElse(null) + \"}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertEquals(expected, editPersonDescriptor.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":70,"appleshill":3}},{"path":"src/test/java/seedu/address/logic/commands/ExportCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"frymash"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"frymash"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"frymash"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"frymash"},"content":"import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"frymash"},"content":"import static seedu.address.logic.commands.ExportCommand.MESSAGE_ARGUMENTS;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"frymash"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"frymash"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"frymash"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"frymash"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"frymash"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"frymash"},"content":"public class ExportCommandTest {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"frymash"},"content":" private final Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"frymash"},"content":" public void execute() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"frymash"},"content":" final String format \u003d \"csv\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"frymash"},"content":" assertCommandFailure(new ExportCommand(format), model, String.format(MESSAGE_ARGUMENTS, format));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"frymash"},"content":" public void equals() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"frymash"},"content":" final ExportCommand standardCommand \u003d new ExportCommand(\"csv\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"frymash"},"content":" final String differentFormat \u003d \"pdf\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"frymash"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"frymash"},"content":" ExportCommand commandWithSameValues \u003d new ExportCommand(\"csv\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"frymash"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"frymash"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"frymash"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"frymash"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"frymash"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"frymash"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"frymash"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"frymash"},"content":" // different export format -\u003e returns false","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"frymash"},"content":" assertFalse(standardCommand.equals(new ExportCommand(differentFormat)));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"frymash"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"frymash":45}},{"path":"src/test/java/seedu/address/logic/commands/FilterCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"package seedu.address.logic.commands;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DiegoTheExplorar"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DiegoTheExplorar"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.testutil.TypicalPersons.DANIEL;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.testutil.TypicalPersons.ELLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DiegoTheExplorar"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DiegoTheExplorar"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DiegoTheExplorar"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DiegoTheExplorar"},"content":"public class FilterCommandTest {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DiegoTheExplorar"},"content":" private Model model;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DiegoTheExplorar"},"content":" @BeforeEach","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":" public void setUp() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DiegoTheExplorar"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":" public void equals() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand filterFirstCommand \u003d new FilterCommand(\"first\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand filterSecondCommand \u003d new FilterCommand(null, \"second\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DiegoTheExplorar"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DiegoTheExplorar"},"content":" assertTrue(filterFirstCommand.equals(filterFirstCommand));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DiegoTheExplorar"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand filterFirstCommandCopy \u003d new FilterCommand(\"first\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DiegoTheExplorar"},"content":" assertTrue(filterFirstCommand.equals(filterFirstCommandCopy));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DiegoTheExplorar"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DiegoTheExplorar"},"content":" assertFalse(filterFirstCommand.equals(1));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DiegoTheExplorar"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DiegoTheExplorar"},"content":" assertFalse(filterFirstCommand.equals(null));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DiegoTheExplorar"},"content":" // different person -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DiegoTheExplorar"},"content":" assertFalse(filterFirstCommand.equals(filterSecondCommand));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case for filtering using name only","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_nameKeyword_personsFound() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.constructSuccessMessage(\"Meier\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(\"Meier\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Arrays.asList(BENSON, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case for filtering using tag only","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_tagKeyword_personsFound() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.constructSuccessMessage(null, \"owesMoney\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(null, \"owesMoney\");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Arrays.asList(BENSON), model.getFilteredPersonList());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case for fitlering usign both","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_nameAndTagKeywords_personFound() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.constructSuccessMessage(\"Meier\", \"friends\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(\"Meier\", \"friends\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Arrays.asList(BENSON, DANIEL), model.getFilteredPersonList());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case for when there is no one after filtering","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_noMatchingNameOrTag_allPersonsReturned() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.MESSAGE_NO_CONTACT_FOUND;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(\"Damith\", \"2103\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Collections.emptyList(), model.getFilteredPersonList());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test case to test parital string fitlering","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"DiegoTheExplorar"},"content":" public void execute_partialNameMatch_personsFound() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"DiegoTheExplorar"},"content":" String expectedMessage \u003d FilterCommand.constructSuccessMessage(\"er\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand command \u003d new FilterCommand(\"er\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"DiegoTheExplorar"},"content":" CommandResult result \u003d command.execute(model);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(Arrays.asList(BENSON, DANIEL, ELLE), model.getFilteredPersonList());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"DiegoTheExplorar"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand filterCommand \u003d new FilterCommand(\"John\", \"client\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"DiegoTheExplorar"},"content":" String expected \u003d FilterCommand.class.getCanonicalName() + \"{name\u003dJohn, tagName\u003dclient}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"DiegoTheExplorar"},"content":" assertEquals(expected, filterCommand.toString());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"DiegoTheExplorar"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":102}},{"path":"src/test/java/seedu/address/logic/handler/DuplicatePhoneTaggerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"valhrd"},"content":"package seedu.address.logic.handler;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"valhrd"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"valhrd"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"valhrd"},"content":"import java.util.List;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"valhrd"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"valhrd"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.Model;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.ModelManager;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.UserPrefs;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"valhrd"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"valhrd"},"content":"import seedu.address.testutil.AddressBookBuilder;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"valhrd"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"valhrd"},"content":"public class DuplicatePhoneTaggerTest {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_ONE \u003d \"11111111\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_TWO \u003d \"12345678\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_THREE \u003d \"87654321\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_FOUR \u003d \"23232323\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_FIVE \u003d \"32323232\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_SIX \u003d \"45454545\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"valhrd"},"content":" private static final String TEST_PHONE_SEVEN \u003d \"54545454\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"valhrd"},"content":" private static final Person AIKEN \u003d new PersonBuilder().withName(\"Aiken\").withPhone(TEST_PHONE_ONE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"valhrd"},"content":" .withEmail(\"aiken@gmail.com\").withAddress(\"Kent Ridge MRT\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"valhrd"},"content":" private static final Person ALEX \u003d new PersonBuilder().withName(\"Alex\").withPhone(TEST_PHONE_TWO)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"valhrd"},"content":" .withEmail(\"alex@yahoo.com\").withAddress(\"Minecraft\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"valhrd"},"content":" private static final Person ALICE \u003d new PersonBuilder().withName(\"Alice\").withPhone(TEST_PHONE_THREE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"valhrd"},"content":" .withEmail(\"alice@hotmail.com\").withAddress(\"CAPT\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"valhrd"},"content":" private static final Person ALBERT \u003d new PersonBuilder().withName(\"Albert\").withPhone(TEST_PHONE_FOUR)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"valhrd"},"content":" .withEmail(\"albert@outlook.com\").withAddress(\"PGP\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"valhrd"},"content":" private static final Person ADRIEL \u003d new PersonBuilder().withName(\"Adriel\").withPhone(TEST_PHONE_FIVE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"valhrd"},"content":" .withEmail(\"adriel@gmail.com\").withAddress(\"UTown\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"valhrd"},"content":" private static final Person TAN_AH_KOW \u003d new PersonBuilder().withName(\"Tan Ah Kow\").withPhone(TEST_PHONE_SIX)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"valhrd"},"content":" .withEmail(\"tak@hotmail.com\").withAddress(\"Woodlands MRT\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"valhrd"},"content":" private static final Person BART_BILL \u003d new PersonBuilder().withName(\"Bartholomew Billiams\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"valhrd"},"content":" .withPhone(TEST_PHONE_SEVEN).withEmail(\"barbill@gmail.com\").withAddress(\"United Kingdom\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"valhrd"},"content":" private final DuplicatePhoneTagger duplicatePhoneTagger \u003d new DuplicatePhoneTagger();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"valhrd"},"content":" private final AddressBookBuilder testAB \u003d new AddressBookBuilder();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"valhrd"},"content":" private Model testModel;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"valhrd"},"content":" @BeforeEach","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"valhrd"},"content":" public void setUp() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"valhrd"},"content":" testAB.withPerson(AIKEN)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"valhrd"},"content":" .withPerson(ALEX)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"valhrd"},"content":" .withPerson(ALICE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"valhrd"},"content":" .withPerson(ALBERT)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"valhrd"},"content":" .withPerson(ADRIEL)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"valhrd"},"content":" .withPerson(TAN_AH_KOW)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"valhrd"},"content":" .withPerson(BART_BILL);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"valhrd"},"content":" // Test for identifying no duplicates","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"valhrd"},"content":" public void execute_isDuplicatePresent_noDuplicates() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.updateFrequenciesOfPhones(persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"valhrd"},"content":" assertFalse(duplicatePhoneTagger.isDuplicatePresent());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"valhrd"},"content":" // Test for identifying duplicates","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"valhrd"},"content":" public void execute_isDuplicatePresent_withDuplicates() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"valhrd"},"content":" Person testPerson \u003d new PersonBuilder().withName(\"Aaron\").withPhone(TEST_PHONE_TWO)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"valhrd"},"content":" .withEmail(\"aaron@example.com\").withAddress(\"Kent Ridge MRT\").build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"valhrd"},"content":" testAB.withPerson(testPerson);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.updateFrequenciesOfPhones(persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"valhrd"},"content":" assertTrue(duplicatePhoneTagger.isDuplicatePresent());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"valhrd"},"content":" // Test for identifying correct duplicate","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"valhrd"},"content":" public void identify_correct_duplicate() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"valhrd"},"content":" Person testPerson \u003d new PersonBuilder().withName(\"Aaron\").withPhone(TEST_PHONE_TWO)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"valhrd"},"content":" .withEmail(\"aiken@example.com\").withAddress(\"Kent Ridge MRT\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"valhrd"},"content":" testAB.withPerson(testPerson);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.updateFrequenciesOfPhones(persons);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"valhrd"},"content":" for (Person person : persons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"valhrd"},"content":" if (person.getPhone().equals(new Phone(TEST_PHONE_TWO))) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"valhrd"},"content":" assertTrue(duplicatePhoneTagger.isPhoneDuplicate(person.getPhone()));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"valhrd"},"content":" } else {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"valhrd"},"content":" assertFalse(duplicatePhoneTagger.isPhoneDuplicate(person.getPhone()));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"valhrd"},"content":" public void execute_tagPhoneDuplicates() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"valhrd"},"content":" Person testPerson \u003d new PersonBuilder().withName(\"Aaron\").withPhone(TEST_PHONE_TWO)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"valhrd"},"content":" .withEmail(\"aaron@example.com\").withAddress(\"Kent Ridge MRT\").build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"valhrd"},"content":" testAB.withPerson(testPerson);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.tagPhoneDuplicates(testModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"valhrd"},"content":" assertTrue(persons","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"valhrd"},"content":" .stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"valhrd"},"content":" .anyMatch(person -\u003e person","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"valhrd"},"content":" .getTags()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"valhrd"},"content":" .stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"valhrd"},"content":" .anyMatch(tag -\u003e tag","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"valhrd"},"content":" .tagName","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"valhrd"},"content":" .equals(DuplicatePhoneTagger.DUPLICATE_PHONE_TAG_NAME))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"valhrd"},"content":" @Test","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"valhrd"},"content":" public void execute_tagPhoneDuplicates_withNoDuplicates() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"valhrd"},"content":" testModel \u003d new ModelManager(testAB.build(), new UserPrefs());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"valhrd"},"content":" duplicatePhoneTagger.tagPhoneDuplicates(testModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"valhrd"},"content":" List\u003cPerson\u003e persons \u003d testModel.getFilteredPersonList();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"valhrd"},"content":" assertFalse(persons","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"valhrd"},"content":" .stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"valhrd"},"content":" .anyMatch(person -\u003e person","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"valhrd"},"content":" .getTags()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"valhrd"},"content":" .stream()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"valhrd"},"content":" .anyMatch(tag -\u003e tag","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"valhrd"},"content":" .tagName","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"valhrd"},"content":" .equals(DuplicatePhoneTagger.DUPLICATE_PHONE_TAG_NAME))));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"valhrd"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"valhrd"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"valhrd"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"valhrd":135}},{"path":"src/test/java/seedu/address/logic/parser/AddCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.AMY;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"public class AddCommandParserTest {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" private AddCommandParser parser \u003d new AddCommandParser();","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"appleshill"},"content":" // Single tag, with financial info and social media handle","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"appleshill"},"content":" Person expectedPerson \u003d new PersonBuilder(BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"some financial info sm/@bob_handle\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"appleshill"},"content":" // Test with whitespace only preamble and all fields present","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"appleshill"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND + \" fi/some financial info sm/@bob_handle\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"appleshill"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"appleshill"},"content":" // Multiple tags, with financial info and social media handle","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" Person expectedPersonMultipleTags \u003d new PersonBuilder(BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"some financial info sm/@bob_handle\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"appleshill"},"content":" // Test with multiple tags, financial info, and social media handle","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"appleshill"},"content":" assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"appleshill"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND + \" fi/some financial info sm/@bob_handle\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" new AddCommand(expectedPersonMultipleTags));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" String validExpectedPersonString \u003d NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // multiple phones","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PHONE_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" // multiple emails","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, EMAIL_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // multiple addresses","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, ADDRESS_DESC_AMY + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" validExpectedPersonString + PHONE_DESC_AMY + EMAIL_DESC_AMY + NAME_DESC_AMY + ADDRESS_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_ADDRESS, PREFIX_EMAIL, PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_EMAIL_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_PHONE_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_ADDRESS_DESC + validExpectedPersonString,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_NAME_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_EMAIL_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_EMAIL));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_PHONE_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertParseFailure(parser, validExpectedPersonString + INVALID_ADDRESS_DESC,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"appleshill"},"content":" // zero tags, no financial info or social media handle","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"appleshill"},"content":" Person expectedPerson \u003d new PersonBuilder(AMY).withTags().withFinancialInfo(\"\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" new AddCommand(expectedPerson));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // missing phone prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" // missing email prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // missing address prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" // invalid phone","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" // invalid email","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" // invalid address","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"-":186,"appleshill":21}},{"path":"src/test/java/seedu/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.DeleteCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"frymash"},"content":"import seedu.address.logic.commands.ExportCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.FindCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.ListCommand;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import seedu.address.model.person.NameContainsKeywordsPredicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonUtil;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" AddCommand command \u003d (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertEquals(new AddCommand(person), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" DeleteCommand command \u003d (DeleteCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" DeleteCommand.COMMAND_WORD + \" \" + INDEX_FIRST_PERSON.getOneBased());","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder(person).build();","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" EditCommand command \u003d (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" + INDEX_FIRST_PERSON.getOneBased() + \" \" + PersonUtil.getEditPersonDescriptorDetails(descriptor));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" FindCommand command \u003d (FindCommand) parser.parseCommand(","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" FindCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"frymash"},"content":" public void parseCommand_export() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"frymash"},"content":" // TODO: softcode \"format/csv\"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"frymash"},"content":" assertTrue(parser.parseCommand(ExportCommand.COMMAND_WORD + \" format/csv\") instanceof ExportCommand);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"frymash"},"content":" public void parseCommand_exportWithValidFormat() throws Exception {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"frymash"},"content":" ExportCommand command \u003d (ExportCommand) parser.parseCommand(ExportCommand.COMMAND_WORD + \" format/csv\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"frymash"},"content":" assertEquals(new ExportCommand(\"csv\"), command);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"frymash"},"content":" @Test","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"frymash"},"content":" public void parseCommand_exportWithInvalidFormat() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"frymash"},"content":" assertThrows(ParseException.class, () -\u003e parser.parseCommand(ExportCommand.COMMAND_WORD + \" foobar\"));","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"frymash"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"frymash"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD) instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ListCommand.COMMAND_WORD + \" 3\") instanceof ListCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"frymash":18,"-":101}},{"path":"src/test/java/seedu/address/logic/parser/EditCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.FINANCIAL_INFO_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.SOCIAL_MEDIA_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"import seedu.address.commons.core.index.Index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"import seedu.address.logic.Messages;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"import seedu.address.testutil.EditPersonDescriptorBuilder;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"public class EditCommandParserTest {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" private EditCommandParser parser \u003d new EditCommandParser();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\", EditCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC, Phone.MESSAGE_CONSTRAINTS); // invalid phone","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_EMAIL_DESC, Email.MESSAGE_CONSTRAINTS); // invalid email","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_ADDRESS_DESC, Address.MESSAGE_CONSTRAINTS); // invalid address","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" // invalid phone followed by valid email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited,","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY,","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_SECOND_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"appleshill"},"content":" + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"appleshill"},"content":" + FINANCIAL_INFO_DESC_AMY + SOCIAL_MEDIA_HANDLE_DESC_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY).build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" .withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" // phone","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" // email","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + EMAIL_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // address","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + ADDRESS_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"appleshill"},"content":" // financial info","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"appleshill"},"content":" userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_FINANCIAL_INFO + VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"appleshill"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"appleshill"},"content":" descriptor.setFinancialInfo(VALID_FINANCIAL_INFO_AMY);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"appleshill"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"appleshill"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"appleshill"},"content":" // social media handle","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"appleshill"},"content":" userInput \u003d targetIndex.getOneBased() + \" \" + PREFIX_SOCIAL_MEDIA_HANDLE + VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"appleshill"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"appleshill"},"content":" descriptor.setSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"appleshill"},"content":" expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"appleshill"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" // AddCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_FIRST_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_BOB + INVALID_PHONE_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":" + INVALID_PHONE_DESC + INVALID_ADDRESS_DESC + INVALID_EMAIL_DESC;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" Index targetIndex \u003d INDEX_THIRD_PERSON;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" EditPersonDescriptor descriptor \u003d new EditPersonDescriptorBuilder().withTags().build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" EditCommand expectedCommand \u003d new EditCommand(targetIndex, descriptor);","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"-":206,"appleshill":25}},{"path":"src/test/java/seedu/address/logic/parser/FilterCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"DiegoTheExplorar"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"DiegoTheExplorar"},"content":"import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"DiegoTheExplorar"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"DiegoTheExplorar"},"content":"import seedu.address.logic.commands.FilterCommand;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"DiegoTheExplorar"},"content":"public class FilterCommandParserTest {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"DiegoTheExplorar"},"content":" private FilterCommandParser parser \u003d new FilterCommandParser();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test for empty input","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"DiegoTheExplorar"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseFailure(parser, \" \", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"DiegoTheExplorar"},"content":" //Test for varying number of space, 1 input and 2 inputs","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"DiegoTheExplorar"},"content":" public void parse_validArgs_returnsFilterCommand() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"DiegoTheExplorar"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"DiegoTheExplorar"},"content":" FilterCommand expectedFilterCommand \u003d new FilterCommand(\"Alice\", \"friend\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseSuccess(parser, \"n/Alice t/friend\", expectedFilterCommand);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"DiegoTheExplorar"},"content":" // multiple whitespaces between filters","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseSuccess(parser, \" \\n n/Alice \\n \\t t/friend \\t\", expectedFilterCommand);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"DiegoTheExplorar"},"content":" // only name provided","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"DiegoTheExplorar"},"content":" expectedFilterCommand \u003d new FilterCommand(\"Alice\", null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseSuccess(parser, \"n/Alice\", expectedFilterCommand);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"DiegoTheExplorar"},"content":" // only tag provided","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"DiegoTheExplorar"},"content":" expectedFilterCommand \u003d new FilterCommand(null, \"friend\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseSuccess(parser, \"t/friend\", expectedFilterCommand);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"DiegoTheExplorar"},"content":" //input with flag but no name or tag","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"DiegoTheExplorar"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"DiegoTheExplorar"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"DiegoTheExplorar"},"content":" assertParseFailure(parser, \"n/ t/\",","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"DiegoTheExplorar"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FilterCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"DiegoTheExplorar"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"DiegoTheExplorar"},"content":"}","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"DiegoTheExplorar"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false}],"authorContributionMap":{"DiegoTheExplorar":48}},{"path":"src/test/java/seedu/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.logic.parser;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d \"123456\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d \"123 Main Street #0505\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d \"rachel@example.com\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" private static final String VALID_FINANCIAL_INFO \u003d \"Salary: $5000\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" private static final String VALID_SOCIAL_MEDIA_HANDLE \u003d \"@johndoe\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void parsePhone_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parsePhone((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void parsePhone_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parsePhone(INVALID_PHONE));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithoutWhitespace_returnsPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(VALID_PHONE));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" public void parsePhone_validValueWithWhitespace_returnsTrimmedPhone() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" String phoneWithWhitespace \u003d WHITESPACE + VALID_PHONE + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Phone expectedPhone \u003d new Phone(VALID_PHONE);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" assertEquals(expectedPhone, ParserUtil.parsePhone(phoneWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void parseAddress_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseAddress((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void parseAddress_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseAddress(INVALID_ADDRESS));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithoutWhitespace_returnsAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(VALID_ADDRESS));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void parseAddress_validValueWithWhitespace_returnsTrimmedAddress() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" String addressWithWhitespace \u003d WHITESPACE + VALID_ADDRESS + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" Address expectedAddress \u003d new Address(VALID_ADDRESS);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertEquals(expectedAddress, ParserUtil.parseAddress(addressWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parseEmail_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseEmail((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseEmail_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseEmail(INVALID_EMAIL));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithoutWhitespace_returnsEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(VALID_EMAIL));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" public void parseEmail_validValueWithWhitespace_returnsTrimmedEmail() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" String emailWithWhitespace \u003d WHITESPACE + VALID_EMAIL + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" Email expectedEmail \u003d new Email(VALID_EMAIL);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertEquals(expectedEmail, ParserUtil.parseEmail(emailWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"appleshill"},"content":" public void parseFinancialInfo_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"appleshill"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseFinancialInfo(null));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"appleshill"},"content":" public void parseFinancialInfo_validValueWithoutWhitespace_returnsFinancialInfo() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"appleshill"},"content":" String expectedFinancialInfo \u003d VALID_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedFinancialInfo, ParserUtil.parseFinancialInfo(VALID_FINANCIAL_INFO));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"appleshill"},"content":" public void parseFinancialInfo_validValueWithWhitespace_returnsTrimmedFinancialInfo() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"appleshill"},"content":" String financialInfoWithWhitespace \u003d WHITESPACE + VALID_FINANCIAL_INFO + WHITESPACE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"appleshill"},"content":" String expectedFinancialInfo \u003d VALID_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedFinancialInfo, ParserUtil.parseFinancialInfo(financialInfoWithWhitespace));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"appleshill"},"content":" public void parseSocialMediaHandle_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"appleshill"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseSocialMediaHandle(null));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"appleshill"},"content":" public void parseSocialMediaHandle_validValueWithoutWhitespace_returnsSocialMediaHandle() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"appleshill"},"content":" String expectedSocialMediaHandle \u003d VALID_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedSocialMediaHandle, ParserUtil.parseSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"appleshill"},"content":" public void parseSocialMediaHandle_validValueWithWhitespace_returnsTrimmedSocialMediaHandle() throws Exception {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"appleshill"},"content":" String socialMediaHandleWithWhitespace \u003d WHITESPACE + VALID_SOCIAL_MEDIA_HANDLE + WHITESPACE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"appleshill"},"content":" String expectedSocialMediaHandle \u003d VALID_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedSocialMediaHandle, ParserUtil.parseSocialMediaHandle(socialMediaHandleWithWhitespace));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"-":196,"appleshill":38}},{"path":"src/test/java/seedu/address/model/person/PersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.model.person;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.ALICE;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BOB;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import seedu.address.testutil.PersonBuilder;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonTest {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" Person person \u003d new PersonBuilder().build();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e person.getTags().remove(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void isSamePerson() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"appleshill"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":" .withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" .withEmail(VALID_EMAIL_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" .withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertFalse(ALICE.isSamePerson(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" Person editedBob \u003d new PersonBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" editedBob \u003d new PersonBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" assertFalse(BOB.isSamePerson(editedBob));","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Person aliceCopy \u003d new PersonBuilder(ALICE).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different person -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Person editedAlice \u003d new PersonBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" // different phone -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withPhone(VALID_PHONE_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" // different email -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withEmail(VALID_EMAIL_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"appleshill"},"content":" // different financial info -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"appleshill"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withFinancialInfo(VALID_FINANCIAL_INFO_BOB).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"appleshill"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"appleshill"},"content":" // different social media handle -\u003e returns false","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"appleshill"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_BOB).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"appleshill"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" editedAlice \u003d new PersonBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" String expected \u003d Person.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName() + \", phone\u003d\" + ALICE.getPhone()","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"appleshill"},"content":" + \", email\u003d\" + ALICE.getEmail() + \", address\u003d\" + ALICE.getAddress()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"appleshill"},"content":" + \", tags\u003d\" + ALICE.getTags() + \", financialInfo\u003d\" + ALICE.getFinancialInfo()","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"appleshill"},"content":" + \", socialMediaHandle\u003d\" + ALICE.getSocialMediaHandle() + \"}\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"-":96,"appleshill":21}},{"path":"src/test/java/seedu/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"appleshill"},"content":"package seedu.address.model.util;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"appleshill"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"appleshill"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"appleshill"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"appleshill"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"appleshill"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"appleshill"},"content":" public void getSamplePersons_returnsCorrectNumberOfPersons() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"appleshill"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"appleshill"},"content":" assertEquals(6, samplePersons.length);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"appleshill"},"content":" public void getSamplePersons_returnsValidPersons() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"appleshill"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"appleshill"},"content":" for (Person person : samplePersons) {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getName());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getPhone());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getEmail());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getAddress());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"appleshill"},"content":" assertNotNull(person.getTags());","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"appleshill"},"content":" public void getSamplePersons_containsExpectedPerson() {","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"appleshill"},"content":" Person[] samplePersons \u003d SampleDataUtil.getSamplePersons();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"appleshill"},"content":" Person expectedPerson \u003d new Person(","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":" new Name(\"Alex Yeoh\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" new Phone(\"87438807\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" new Email(\"alexyeoh@example.com\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" new Address(\"Blk 30 Geylang Street 29, #06-40\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" SampleDataUtil.getTagSet(\"friends\"),","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" \"Annual life insurance premium: $1,200\",","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" \"alex_yeoh\"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" );","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"appleshill"},"content":" assertEquals(expectedPerson, samplePersons[0]);","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":"}","lastModifiedDate":"2024-10-06","isFullCredit":false}],"authorContributionMap":{"appleshill":49}},{"path":"src/test/java/seedu/address/storage/JsonAdaptedPersonTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.storage;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.storage.JsonAdaptedPerson.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.Assert.assertThrows;","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.testutil.TypicalPersons.BENSON;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class JsonAdaptedPersonTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String INVALID_PHONE \u003d \"+651234\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_ADDRESS \u003d \" \";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" private static final String INVALID_EMAIL \u003d \"example.com\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_PHONE \u003d BENSON.getPhone().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private static final String VALID_EMAIL \u003d BENSON.getEmail().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final String VALID_ADDRESS \u003d BENSON.getAddress().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" private static final String VALID_FINANCIAL_INFO \u003d \"Good credit score, low debt\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"appleshill"},"content":" private static final String VALID_SOCIAL_MEDIA_HANDLE \u003d \"geoff_345\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void toModelType_validPersonDetails_returnsPerson() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(BENSON);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertEquals(BENSON, person.toModelType());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(INVALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(null, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void toModelType_invalidPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(VALID_NAME, INVALID_PHONE, VALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Phone.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void toModelType_nullPhone_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, null, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"appleshill"},"content":" VALID_TAGS, VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void toModelType_invalidEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, INVALID_EMAIL, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Email.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toModelType_nullEmail_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, null, VALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Email.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, INVALID_ADDRESS, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Address.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, null, VALID_TAGS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" JsonAdaptedPerson person \u003d","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"appleshill"},"content":" new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS, invalidTags,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"appleshill"},"content":" VALID_FINANCIAL_INFO, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, person::toModelType);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"appleshill"},"content":" public void toModelType_nullFinancialInfo_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"appleshill"},"content":" VALID_TAGS, null, VALID_SOCIAL_MEDIA_HANDLE);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"appleshill"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"financialInfo\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"appleshill"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"appleshill"},"content":" @Test","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"appleshill"},"content":" public void toModelType_nullSocialMediaHandle_throwsIllegalValueException() {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"appleshill"},"content":" JsonAdaptedPerson person \u003d new JsonAdaptedPerson(VALID_NAME, VALID_PHONE, VALID_EMAIL, VALID_ADDRESS,","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"appleshill"},"content":" VALID_TAGS, VALID_FINANCIAL_INFO, null);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"appleshill"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, \"socialMediaHandle\");","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"appleshill"},"content":" assertThrows(IllegalValueException.class, expectedMessage, person::toModelType);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"-":101,"appleshill":36}},{"path":"src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * A utility class to help with building EditPersonDescriptor objects.","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class EditPersonDescriptorBuilder {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private EditPersonDescriptor descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(EditPersonDescriptor descriptor) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" this.descriptor \u003d new EditPersonDescriptor(descriptor);","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns an {@code EditPersonDescriptor} with fields containing {@code person}\u0027s details","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" descriptor \u003d new EditPersonDescriptor();","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" descriptor.setName(person.getName());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" descriptor.setPhone(person.getPhone());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" descriptor.setEmail(person.getEmail());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" descriptor.setAddress(person.getAddress());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" descriptor.setTags(person.getTags());","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" descriptor.setFinancialInfo((person.getFinancialInfo()));","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"appleshill"},"content":" descriptor.setSocialMediaHandle(person.getSocialMediaHandle());","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" descriptor.setPhone(new Phone(phone));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" descriptor.setEmail(new Email(email));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" descriptor.setAddress(new Address(address));","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditPersonDescriptor}","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" * that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public EditPersonDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"appleshill"},"content":" * Sets the {@code financialInfo} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"appleshill"},"content":" public EditPersonDescriptorBuilder withFinancialInfo(String info) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"appleshill"},"content":" descriptor.setFinancialInfo(info);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"appleshill"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"appleshill"},"content":" * Sets the {@code socialMediaHandle} of the {@code EditPersonDescriptor} that we are building.","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"appleshill"},"content":" public EditPersonDescriptorBuilder withSocialMediaHandle(String handle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"appleshill"},"content":" descriptor.setSocialMediaHandle(handle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"appleshill"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public EditPersonDescriptor build() {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" return descriptor;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"-":87,"appleshill":18}},{"path":"src/test/java/seedu/address/testutil/PersonBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Address;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Email;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Name;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Phone;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import seedu.address.model.util.SampleDataUtil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * A utility class to help with building Person objects.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class PersonBuilder {","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String DEFAULT_PHONE \u003d \"85355255\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String DEFAULT_EMAIL \u003d \"amy@gmail.com\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String DEFAULT_ADDRESS \u003d \"123, Jurong West Ave 6, #08-111\";","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"appleshill"},"content":" public static final String DEFAULT_FINANCIAL_INFO \u003d \"Good credit history\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"appleshill"},"content":" public static final String DEFAULT_SOCIAL_MEDIA_HANDLE \u003d \"alice_p\";","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"appleshill"},"content":" public static final String DEFAULT_TAG \u003d \"^\";","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Phone phone;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private Email email;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Address address;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"appleshill"},"content":" private String financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" private String socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * Creates a {@code PersonBuilder} with the default details.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public PersonBuilder() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" phone \u003d new Phone(DEFAULT_PHONE);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" email \u003d new Email(DEFAULT_EMAIL);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" address \u003d new Address(DEFAULT_ADDRESS);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" tags.add(new Tag(DEFAULT_TAG));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" financialInfo \u003d DEFAULT_FINANCIAL_INFO;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" socialMediaHandle \u003d DEFAULT_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * Initializes the PersonBuilder with the data of {@code personToCopy}.","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public PersonBuilder(Person personToCopy) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" name \u003d personToCopy.getName();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" phone \u003d personToCopy.getPhone();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" email \u003d personToCopy.getEmail();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" address \u003d personToCopy.getAddress();","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e(personToCopy.getTags());","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"appleshill"},"content":" financialInfo \u003d personToCopy.getFinancialInfo();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"appleshill"},"content":" socialMediaHandle \u003d personToCopy.getSocialMediaHandle();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * Sets the {@code Name} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public PersonBuilder withName(String name) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public PersonBuilder withTags(String ... tags) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Sets the {@code Address} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public PersonBuilder withAddress(String address) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.address \u003d new Address(address);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * Sets the {@code Phone} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public PersonBuilder withPhone(String phone) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" this.phone \u003d new Phone(phone);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Sets the {@code Email} of the {@code Person} that we are building.","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public PersonBuilder withEmail(String email) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" this.email \u003d new Email(email);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"appleshill"},"content":" * Sets the {@code financialInfo} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"appleshill"},"content":" public PersonBuilder withFinancialInfo(String financialInfo) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"appleshill"},"content":" this.financialInfo \u003d financialInfo;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"appleshill"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"appleshill"},"content":" /**","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"appleshill"},"content":" * Sets the {@code socialMediaHandle} of the {@code Person} that we are building.","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"appleshill"},"content":" */","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"appleshill"},"content":" public PersonBuilder withSocialMediaHandle(String socialMediaHandle) {","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"appleshill"},"content":" this.socialMediaHandle \u003d socialMediaHandle;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"appleshill"},"content":" return this;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"appleshill"},"content":" }","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public Person build() {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"appleshill"},"content":" return new Person(name, phone, email, address, tags, financialInfo, socialMediaHandle);","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"-":95,"appleshill":27}},{"path":"src/test/java/seedu/address/testutil/PersonUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_FINANCIAL_INFO;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_SOCIAL_MEDIA_HANDLE;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.AddCommand;","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import seedu.address.logic.commands.EditCommand.EditPersonDescriptor;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import seedu.address.model.tag.Tag;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * A utility class for Person.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class PersonUtil {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Returns an add command string for adding the {@code person}.","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static String getAddCommand(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" return AddCommand.COMMAND_WORD + \" \" + getPersonDetails(person);","lastModifiedDate":"2017-03-29","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code person}\u0027s details.","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public static String getPersonDetails(Person person) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" sb.append(PREFIX_NAME + person.getName().fullName + \" \");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" sb.append(PREFIX_PHONE + person.getPhone().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" sb.append(PREFIX_EMAIL + person.getEmail().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" sb.append(PREFIX_ADDRESS + person.getAddress().value + \" \");","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" person.getTags().stream().forEach(","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"appleshill"},"content":" sb.append(PREFIX_FINANCIAL_INFO + person.getFinancialInfo() + \" \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" sb.append(PREFIX_SOCIAL_MEDIA_HANDLE + person.getSocialMediaHandle() + \" \");","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Returns the part of command string for the given {@code EditPersonDescriptor}\u0027s details.","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" descriptor.getPhone().ifPresent(phone -\u003e sb.append(PREFIX_PHONE).append(phone.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" descriptor.getEmail().ifPresent(email -\u003e sb.append(PREFIX_EMAIL).append(email.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" descriptor.getAddress().ifPresent(address -\u003e sb.append(PREFIX_ADDRESS).append(address.value).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"appleshill"},"content":" descriptor.getFinancialInfo().ifPresent(info -\u003e sb.append(PREFIX_FINANCIAL_INFO).append(info).append(\" \"));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"appleshill"},"content":" descriptor.getSocialMediaHandle().ifPresent(handle -\u003e sb.append(PREFIX_SOCIAL_MEDIA_HANDLE)","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" .append(handle).append(\" \"));","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"-":62,"appleshill":7}},{"path":"src/test/java/seedu/address/testutil/TypicalPersons.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package seedu.address.testutil;","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_FINANCIAL_INFO_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_AMY;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"appleshill"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_SOCIAL_MEDIA_HANDLE_BOB;","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import seedu.address.model.AddressBook;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import seedu.address.model.person.Person;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Person} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"public class TypicalPersons {","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public static final Person ALICE \u003d new PersonBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withAddress(\"123, Jurong West Ave 6, #08-111\").withEmail(\"alice@example.com\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" .withPhone(\"94351253\")","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Good credit history\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"alice_p\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public static final Person BENSON \u003d new PersonBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" .withAddress(\"311, Clementi Ave 2, #02-25\")","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" .withEmail(\"johnd@example.com\").withPhone(\"98765432\")","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Moderate debt\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"benson_meier\")","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static final Person CARL \u003d new PersonBuilder().withName(\"Carl Kurz\").withPhone(\"95352563\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"appleshill"},"content":" .withEmail(\"heinz@example.com\").withAddress(\"wall street\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"carl_k\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final Person DANIEL \u003d new PersonBuilder().withName(\"Daniel Meier\").withPhone(\"87652533\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"appleshill"},"content":" .withEmail(\"cornelia@example.com\").withAddress(\"10th street\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"daniel_m\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final Person ELLE \u003d new PersonBuilder().withName(\"Elle Meyer\").withPhone(\"9482224\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"appleshill"},"content":" .withEmail(\"werner@example.com\").withAddress(\"michegan ave\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"elle_m\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public static final Person FIONA \u003d new PersonBuilder().withName(\"Fiona Kunz\").withPhone(\"9482427\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"appleshill"},"content":" .withEmail(\"lydia@example.com\").withAddress(\"little tokyo\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"fiona_k\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static final Person GEORGE \u003d new PersonBuilder().withName(\"George Best\").withPhone(\"9482442\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"appleshill"},"content":" .withEmail(\"anna@example.com\").withAddress(\"4th street\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"george_b\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public static final Person HOON \u003d new PersonBuilder().withName(\"Hoon Meier\").withPhone(\"8482424\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"appleshill"},"content":" .withEmail(\"stefan@example.com\").withAddress(\"little india\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"hoon_m\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public static final Person IDA \u003d new PersonBuilder().withName(\"Ida Mueller\").withPhone(\"8482131\")","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"appleshill"},"content":" .withEmail(\"hans@example.com\").withAddress(\"chicago ave\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(\"Unknown\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(\"ida_m\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"appleshill"},"content":" .withTags(\"friends\")","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"appleshill"},"content":" .build();","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"appleshill"},"content":"","lastModifiedDate":"2024-10-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // Manually added - Person\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static final Person AMY \u003d new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"appleshill"},"content":" .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_AMY)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public static final Person BOB \u003d new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB)","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"appleshill"},"content":" .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"appleshill"},"content":" .withFinancialInfo(VALID_FINANCIAL_INFO_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"appleshill"},"content":" .withSocialMediaHandle(VALID_SOCIAL_MEDIA_HANDLE_BOB)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"appleshill"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-05","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" private TypicalPersons() {} // prevents instantiation","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * Returns an {@code AddressBook} with all the typical persons.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" for (Person person : getTypicalPersons()) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" ab.addPerson(person);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public static List\u003cPerson\u003e getTypicalPersons() {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"-":67,"appleshill":51}}] diff --git a/AY2425S1-CS2103T-W14-2_tp_master/commits.json b/AY2425S1-CS2103T-W14-2_tp_master/commits.json index c6e59b42..cfe84b9f 100644 --- a/AY2425S1-CS2103T-W14-2_tp_master/commits.json +++ b/AY2425S1-CS2103T-W14-2_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"frymash":[{"date":"2024-09-28","commitResults":[{"hash":"08747059b5c67a980d725f0d6baceb56b8ae9b21","isMergeCommit":false,"messageTitle":"Update AboutUs Isaac","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"8d64f93bd36a280fe749d54e087025e5e0cf02c4","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-W14-2:master\u0027 into update-aboutUs-Isaac","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cd4dc08399ad41fc9de881efb1edb66d7a2f8223","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-W14-2:master\u0027 into update-aboutUs-isaac","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"64b8dc6173f352aa6936de4a4be8e085b9fe9212","isMergeCommit":false,"messageTitle":"Create a new export command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":0}}},{"hash":"2e9c807ac2ea008b57b7c74c9a28d584cdc24dce","isMergeCommit":false,"messageTitle":"Hook ExportCommand into the application","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":4},"test-code":{"insertions":25,"deletions":8}}},{"hash":"dacd962902e3c39efbf926ce89d49907ee2a1fb6","isMergeCommit":false,"messageTitle":"Make ExportCommand accept parameters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":2},"test-code":{"insertions":23,"deletions":2}}},{"hash":"ee8d1637d1e265c9f2c6f194807e66bc855ca803","isMergeCommit":false,"messageTitle":"Resolve CheckStyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":7},"test-code":{"insertions":9,"deletions":3}}},{"hash":"08246e945598ef0164222ce6c7508856e8c6630a","isMergeCommit":false,"messageTitle":"Removed ExportCommand.equals stub","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":15}}},{"hash":"cf0bbefb469849383fd9529070122504c03be252","isMergeCommit":false,"messageTitle":"Implement ExportCommand.equals defintion and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0},"test-code":{"insertions":20,"deletions":1}}}]}],"RyanWarwick":[{"date":"2024-09-28","commitResults":[{"hash":"938781d86bffaa7bfd22df945944ac4aac297dc2","isMergeCommit":false,"messageTitle":"Update AboutUs for Ryan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"a4dcf5624e587b42f01045975b2ecadc0567517c","isMergeCommit":true,"messageTitle":"Merge pull request #22 from appleshill/update-aboutUs-eliot","messageBody":"Update AboutUs Eliot","fileTypesAndContributionMap":{}},{"hash":"cd84b5d95ee38e47e22aa0693a7cbb7d701594b9","isMergeCommit":true,"messageTitle":"Merge pull request #25 from frymash/update-aboutUs-isaac","messageBody":"Update AboutUs Isaac","fileTypesAndContributionMap":{}},{"hash":"4441167655881c0a4d84e418303796fd732e7a1b","isMergeCommit":true,"messageTitle":"Merge pull request #26 from valhrd/branch-aboutUs-valentin","messageBody":"Update AboutUs Valentin","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"053b2e1ade16d42c762558743b182a09a07de899","isMergeCommit":false,"messageTitle":"Update user stories, use cases, non-functional requirements, glossary in docs/DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":89,"deletions":7}}},{"hash":"eb86266ebe2c3ddbadedcdd04c316923f6fc2984","isMergeCommit":true,"messageTitle":"Merge pull request #36 from RyanWarwick/update-development-guide","messageBody":"Update user stories, use cases, non-functional requirements, glossary…","fileTypesAndContributionMap":{}},{"hash":"7b5a05b9ed2eec97fb94eb9c8e2c6e240cb9d403","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-ryan-photo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ea6b9380cebafcd771b4570d7ff2be2c4bc27965","isMergeCommit":true,"messageTitle":"Merge pull request #37 from RyanWarwick/add-ryan-photo","messageBody":"Add ryan photo","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"6b93d167531a2258a1c8bdd6e36ae6a8cb0adf87","isMergeCommit":true,"messageTitle":"Merge pull request #51 from frymash/add-csv-export","messageBody":"Add partial CSV export functionality","fileTypesAndContributionMap":{}}]}],"DiegoTheExplorar":[{"date":"2024-09-28","commitResults":[{"hash":"a0ada79527c873938c0cc895d3269bb78e973c94","isMergeCommit":false,"messageTitle":"Update AboutUs Arvind","messageBody":"Added my photo, description and links\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"ce4a29ef423f7b37ee9fb523e119c7ee279147d7","isMergeCommit":false,"messageTitle":"update-aboutUs-Arvind","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-29","commitResults":[{"hash":"9b8d99bb94b4a268e5fb36ceba09a380d566498e","isMergeCommit":true,"messageTitle":"Merge pull request #30 from valhrd/branch-update-site-wide-settings","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}},{"hash":"1cd97def711607aea16a1af372ee030f8efec3e5","isMergeCommit":true,"messageTitle":"Merge pull request #32 from valhrd/branch-update-site-wide-settings","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"4711c252b9f3f1d8ed4068c1925b9de9608ef5d2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/DiegoTheExplorar/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b9cd78bfea16d09330cfc7ca8ba1c5d9db12d9cc","isMergeCommit":false,"messageTitle":"Update Readme Page","messageBody":"Added Java CI icon and added credits to AB3\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":11}}},{"hash":"c455f248dc93dea143df6301933c98c20e1c059b","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-05","commitResults":[{"hash":"b8066030e6db814d5a2dc921555aadbf24e86b75","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/DiegoTheExplorar/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c98878fb53d8844d6b4b6de97ca02a1c9e944284","isMergeCommit":false,"messageTitle":"Add Filter","messageBody":"Added FilterCommand and FilterCommandParser and relevant test cases\n","fileTypesAndContributionMap":{"functional-code":{"insertions":147,"deletions":0},"test-code":{"insertions":147,"deletions":0}}},{"hash":"949c7a1f059dd8cad92b8b46e61252488f0a3012","isMergeCommit":false,"messageTitle":"End file with new line","messageBody":"Failed CI/CD so added new line EOF\n","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":9},"test-code":{"insertions":5,"deletions":5}}},{"hash":"8901a245c9c47a2a362907bde61a5f07b9722f00","isMergeCommit":false,"messageTitle":"More Checkstyle changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12}}},{"hash":"764f47a8e92083a3717fdf9e63a19b921433c666","isMergeCommit":false,"messageTitle":"More Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}}]},{"date":"2024-10-06","commitResults":[{"hash":"5acaf701f6e370b2fb902faf0810e3357b5bf0d9","isMergeCommit":true,"messageTitle":"Merge pull request #46 from appleshill/modify-add-contact","messageBody":"Modify Add Contact","fileTypesAndContributionMap":{}},{"hash":"aee98f63163a9d6f22cda983e1c1946a6386f005","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/DiegoTheExplorar/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"527bad98a2481469746b5a39b8efc73d1993f2a3","isMergeCommit":false,"messageTitle":"Fix failing test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":4}}},{"hash":"0b87f517d470a606e331bb5aca2cf1d0e4dbacc6","isMergeCommit":true,"messageTitle":"Merge pull request #48 from DiegoTheExplorar/master","messageBody":"Fix test for add filter","fileTypesAndContributionMap":{}}]}],"valhrd":[{"date":"2024-09-28","commitResults":[{"hash":"11abb89431c6d06cbbf39f18f59b294c10f2f3cf","isMergeCommit":true,"messageTitle":"Merge pull request #13 from frymash/add-isaacs-photo","messageBody":"Add Isaac\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"61a82adb99728962fa839ae4e5d4575a8af97b2a","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"5113cd9d7fc99cedc785d328f04e6309fb4e01cf","isMergeCommit":false,"messageTitle":"Update site.json","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"24c8319002ecd3f9897975df00bb62c92c672d91","isMergeCommit":false,"messageTitle":"Update site.json","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-29","commitResults":[{"hash":"5da95768160f2f8cadb46d608caa37cda08b8df9","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-02","commitResults":[{"hash":"cd81423e6b75e45dd9255a6031268cc947ef8bdd","isMergeCommit":true,"messageTitle":"Merge pull request #34 from DiegoTheExplorar/update-readme-page","messageBody":"Update readme page","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"53a36773fad6cab887331bc55e265bae0c31ae8d","isMergeCommit":false,"messageTitle":"Add duplicate detection functionality for EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":11}}},{"hash":"5bc56ce02394357c972c2e31f719c041c72e3e78","isMergeCommit":false,"messageTitle":"Add duplicate detection functionality for EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":39}}},{"hash":"bc18edc848bfa7513332c1bc3bf8a654e17c945e","isMergeCommit":false,"messageTitle":"Update to fit checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":3}}},{"hash":"60678dbb95e0e4bd7f8eec00ed8c5a2d3615107c","isMergeCommit":false,"messageTitle":"Add unit testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":111,"deletions":46},"test-code":{"insertions":96,"deletions":0}}},{"hash":"f786769d242bdf2239da8f7c8f0cef436ce6eeca","isMergeCommit":false,"messageTitle":"Update for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":10}}},{"hash":"5269aa5bfda0f4704bc30bed01e3547c1f4920fc","isMergeCommit":false,"messageTitle":"Update unit testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"338badaf5c90eb1805a26970af367501b14c044e","isMergeCommit":false,"messageTitle":"Update for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":19}}},{"hash":"fc24f5eb9b6183119e6b8d2eab34dcd1e94e405c","isMergeCommit":false,"messageTitle":"Fix unit testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":6,"deletions":6}}},{"hash":"127e43dd996ef61c605dac42c81d4558b87be680","isMergeCommit":true,"messageTitle":"Merge pull request #50 from appleshill/master","messageBody":"Change for default tag","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"37a419626663cfb57ea062bbae92c2b546cbd98a","isMergeCommit":false,"messageTitle":"Colour code DuplicatePhone tag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":2}}},{"hash":"512488fc67547ae49248890fe60321fdc3bd5067","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":9}}},{"hash":"71227cc7456d7b9ff19982fa13bb347fdacf57b7","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"5cfae6f87772e4d946fbad7b81ff7b9f64666491","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"8318751b3d95ff12ce5c6b1205b80b88642a69d1","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":10}}},{"hash":"ba745d7054017418cb1045d803b41041bd582055","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"90325efba7fecab2673755a2c53a95df673ff17d","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":1}}}]}],"appleshill":[{"date":"2024-09-28","commitResults":[{"hash":"25a5cad44b3018111ffbc1468adda4463494025f","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}},{"hash":"1f496b73c7dc719394fdd49ac8aec0a459b94bc6","isMergeCommit":true,"messageTitle":"Merge pull request #23 from RyanWarwick/update-aboutus-ryan","messageBody":"Update AboutUs Ryan","fileTypesAndContributionMap":{}},{"hash":"4468f12f316ef082e42a805ef471be3f3b69472a","isMergeCommit":true,"messageTitle":"Merge pull request #24 from DiegoTheExplorar/update-aboutUs-arvind","messageBody":"Update about us arvind","fileTypesAndContributionMap":{}}]},{"date":"2024-09-29","commitResults":[{"hash":"03644266eb0e37308cc79107e226e6af69818d7f","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":2}}},{"hash":"e3df5d3026193a39b375e2da367bedf440528e62","isMergeCommit":true,"messageTitle":"Merge pull request #33 from appleshill/update-dev-guide","messageBody":"Update the DG","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"c3e2ac87e3ce636f92aaebaccaeb63f8f6930e72","isMergeCommit":false,"messageTitle":"Modify add and edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":223,"deletions":31},"test-code":{"insertions":155,"deletions":30}}}]},{"date":"2024-10-06","commitResults":[{"hash":"3b146be796e2905381fd260a1e196d6f721d5503","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":1}}},{"hash":"15e7c2d141d106193604b19b3fc823f5ea13b16f","isMergeCommit":false,"messageTitle":"Make some test changes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":47,"deletions":14}}},{"hash":"aa1eb7d4ae9ad5a317c77bcc94d2e53dd44b1ea1","isMergeCommit":false,"messageTitle":"More checkstyle fixes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":11}}},{"hash":"d98b5b7d3aac1748c85cbc34ce5a558d09aa6bdd","isMergeCommit":false,"messageTitle":"Remove unnecessary file for codecov reasons","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":15}}},{"hash":"3a05b8701bc0428c2c4e6feed1c9c3a1b8258b8b","isMergeCommit":false,"messageTitle":"Improve tests for codecov","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":112,"deletions":2}}},{"hash":"2585bf310f02b3f1fc15e960943b3de6a6fb0e5e","isMergeCommit":false,"messageTitle":"Fix code to pass tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"c4d755a1622a7db3c02b78f1af8acebb71afe2d7","isMergeCommit":false,"messageTitle":"Modify Persons to resolve tag issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"15392b4196724c6ca15ea45adca54120ebfbb36a","isMergeCommit":true,"messageTitle":"Merge pull request #44 from DiegoTheExplorar/add-filter","messageBody":"Add filter","fileTypesAndContributionMap":{}},{"hash":"19a20c3f5dea0011313084b7846804e2d029060e","isMergeCommit":true,"messageTitle":"Merge pull request #47 from valhrd/add-duplicate-detection","messageBody":"Add Duplicate Detection","fileTypesAndContributionMap":{}},{"hash":"9c53030fa98c1f2d8b3082bd79b8c6f89cb8b5e7","isMergeCommit":true,"messageTitle":"Merge pull request #49 from valhrd/duplication-test-fix","messageBody":"Fix Testing for Duplicate Phones","fileTypesAndContributionMap":{}},{"hash":"ead8072c87e53d4d7087d51542a425061472d9e6","isMergeCommit":false,"messageTitle":"Change for default tag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-12","commitResults":[{"hash":"d38c7b169eef484e27e558f2114b22e9b19bd93f","isMergeCommit":true,"messageTitle":"Merge pull request #56 from valhrd/colour-coded-duplicatePhone-tag","messageBody":"Colour code DuplicatePhone tag","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"frymash":{"docs":5,"functional-code":96,"test-code":63},"RyanWarwick":{"docs":92,"functional-code":0,"test-code":0},"DiegoTheExplorar":{"docs":13,"functional-code":148,"test-code":150},"valhrd":{"docs":6,"functional-code":117,"test-code":135},"appleshill":{"docs":7,"functional-code":208,"test-code":326}},"authorContributionVariance":{"frymash":2410.5142,"RyanWarwick":383.80347,"DiegoTheExplorar":5181.622,"valhrd":9743.534,"appleshill":10012.735},"authorDisplayNameMap":{"frymash":"CS2103T-W14-2 ISAA..XUAN","RyanWarwick":"CS2103T-W14-2 RYAN.. HAN","DiegoTheExplorar":"CS2103T-W14-2 ARVI..AJAN","valhrd":"CS2103T-W14-2 HAN ..NTIN","appleshill":"CS2103T-W14-2 SNOD..ETER"}} +{"authorDailyContributionsMap":{"frymash":[{"date":"2024-09-28","commitResults":[{"hash":"08747059b5c67a980d725f0d6baceb56b8ae9b21","isMergeCommit":false,"messageTitle":"Update AboutUs Isaac","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"8d64f93bd36a280fe749d54e087025e5e0cf02c4","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-W14-2:master\u0027 into update-aboutUs-Isaac","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cd4dc08399ad41fc9de881efb1edb66d7a2f8223","isMergeCommit":true,"messageTitle":"Merge branch \u0027AY2425S1-CS2103T-W14-2:master\u0027 into update-aboutUs-isaac","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"64b8dc6173f352aa6936de4a4be8e085b9fe9212","isMergeCommit":false,"messageTitle":"Create a new export command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":19,"deletions":0}}},{"hash":"2e9c807ac2ea008b57b7c74c9a28d584cdc24dce","isMergeCommit":false,"messageTitle":"Hook ExportCommand into the application","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":8,"deletions":4},"test-code":{"insertions":25,"deletions":8}}},{"hash":"dacd962902e3c39efbf926ce89d49907ee2a1fb6","isMergeCommit":false,"messageTitle":"Make ExportCommand accept parameters","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":60,"deletions":2},"test-code":{"insertions":23,"deletions":2}}},{"hash":"ee8d1637d1e265c9f2c6f194807e66bc855ca803","isMergeCommit":false,"messageTitle":"Resolve CheckStyle errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":20,"deletions":7},"test-code":{"insertions":9,"deletions":3}}},{"hash":"08246e945598ef0164222ce6c7508856e8c6630a","isMergeCommit":false,"messageTitle":"Removed ExportCommand.equals stub","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":15}}},{"hash":"cf0bbefb469849383fd9529070122504c03be252","isMergeCommit":false,"messageTitle":"Implement ExportCommand.equals defintion and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":0},"test-code":{"insertions":20,"deletions":1}}}]}],"RyanWarwick":[{"date":"2024-09-28","commitResults":[{"hash":"938781d86bffaa7bfd22df945944ac4aac297dc2","isMergeCommit":false,"messageTitle":"Update AboutUs for Ryan","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"a4dcf5624e587b42f01045975b2ecadc0567517c","isMergeCommit":true,"messageTitle":"Merge pull request #22 from appleshill/update-aboutUs-eliot","messageBody":"Update AboutUs Eliot","fileTypesAndContributionMap":{}},{"hash":"cd84b5d95ee38e47e22aa0693a7cbb7d701594b9","isMergeCommit":true,"messageTitle":"Merge pull request #25 from frymash/update-aboutUs-isaac","messageBody":"Update AboutUs Isaac","fileTypesAndContributionMap":{}},{"hash":"4441167655881c0a4d84e418303796fd732e7a1b","isMergeCommit":true,"messageTitle":"Merge pull request #26 from valhrd/branch-aboutUs-valentin","messageBody":"Update AboutUs Valentin","fileTypesAndContributionMap":{}}]},{"date":"2024-10-03","commitResults":[{"hash":"053b2e1ade16d42c762558743b182a09a07de899","isMergeCommit":false,"messageTitle":"Update user stories, use cases, non-functional requirements, glossary in docs/DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":89,"deletions":7}}},{"hash":"eb86266ebe2c3ddbadedcdd04c316923f6fc2984","isMergeCommit":true,"messageTitle":"Merge pull request #36 from RyanWarwick/update-development-guide","messageBody":"Update user stories, use cases, non-functional requirements, glossary…","fileTypesAndContributionMap":{}},{"hash":"7b5a05b9ed2eec97fb94eb9c8e2c6e240cb9d403","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into add-ryan-photo","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"ea6b9380cebafcd771b4570d7ff2be2c4bc27965","isMergeCommit":true,"messageTitle":"Merge pull request #37 from RyanWarwick/add-ryan-photo","messageBody":"Add ryan photo","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"6b93d167531a2258a1c8bdd6e36ae6a8cb0adf87","isMergeCommit":true,"messageTitle":"Merge pull request #51 from frymash/add-csv-export","messageBody":"Add partial CSV export functionality","fileTypesAndContributionMap":{}}]}],"DiegoTheExplorar":[{"date":"2024-09-28","commitResults":[{"hash":"a0ada79527c873938c0cc895d3269bb78e973c94","isMergeCommit":false,"messageTitle":"Update AboutUs Arvind","messageBody":"Added my photo, description and links\n","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"ce4a29ef423f7b37ee9fb523e119c7ee279147d7","isMergeCommit":false,"messageTitle":"update-aboutUs-Arvind","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-29","commitResults":[{"hash":"9b8d99bb94b4a268e5fb36ceba09a380d566498e","isMergeCommit":true,"messageTitle":"Merge pull request #30 from valhrd/branch-update-site-wide-settings","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}},{"hash":"1cd97def711607aea16a1af372ee030f8efec3e5","isMergeCommit":true,"messageTitle":"Merge pull request #32 from valhrd/branch-update-site-wide-settings","messageBody":"Update site-wide settings","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"4711c252b9f3f1d8ed4068c1925b9de9608ef5d2","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/DiegoTheExplorar/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"b9cd78bfea16d09330cfc7ca8ba1c5d9db12d9cc","isMergeCommit":false,"messageTitle":"Update Readme Page","messageBody":"Added Java CI icon and added credits to AB3\n","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":11}}},{"hash":"c455f248dc93dea143df6301933c98c20e1c059b","isMergeCommit":false,"messageTitle":"Update README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-05","commitResults":[{"hash":"b8066030e6db814d5a2dc921555aadbf24e86b75","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/DiegoTheExplorar/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"c98878fb53d8844d6b4b6de97ca02a1c9e944284","isMergeCommit":false,"messageTitle":"Add Filter","messageBody":"Added FilterCommand and FilterCommandParser and relevant test cases\n","fileTypesAndContributionMap":{"functional-code":{"insertions":147,"deletions":0},"test-code":{"insertions":147,"deletions":0}}},{"hash":"949c7a1f059dd8cad92b8b46e61252488f0a3012","isMergeCommit":false,"messageTitle":"End file with new line","messageBody":"Failed CI/CD so added new line EOF\n","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":9},"test-code":{"insertions":5,"deletions":5}}},{"hash":"8901a245c9c47a2a362907bde61a5f07b9722f00","isMergeCommit":false,"messageTitle":"More Checkstyle changes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":12}}},{"hash":"764f47a8e92083a3717fdf9e63a19b921433c666","isMergeCommit":false,"messageTitle":"More Checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":1}}}]},{"date":"2024-10-06","commitResults":[{"hash":"5acaf701f6e370b2fb902faf0810e3357b5bf0d9","isMergeCommit":true,"messageTitle":"Merge pull request #46 from appleshill/modify-add-contact","messageBody":"Modify Add Contact","fileTypesAndContributionMap":{}},{"hash":"aee98f63163a9d6f22cda983e1c1946a6386f005","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/DiegoTheExplorar/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"527bad98a2481469746b5a39b8efc73d1993f2a3","isMergeCommit":false,"messageTitle":"Fix failing test case","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":3,"deletions":4}}},{"hash":"0b87f517d470a606e331bb5aca2cf1d0e4dbacc6","isMergeCommit":true,"messageTitle":"Merge pull request #48 from DiegoTheExplorar/master","messageBody":"Fix test for add filter","fileTypesAndContributionMap":{}}]},{"date":"2024-10-13","commitResults":[{"hash":"d91dde913273290bacb1e405cb83aa738c2130bc","isMergeCommit":true,"messageTitle":"Merge pull request #57 from appleshill/modify-frontend-to-match-mockup","messageBody":"Modify frontend to match mockup","fileTypesAndContributionMap":{}}]}],"valhrd":[{"date":"2024-09-28","commitResults":[{"hash":"11abb89431c6d06cbbf39f18f59b294c10f2f3cf","isMergeCommit":true,"messageTitle":"Merge pull request #13 from frymash/add-isaacs-photo","messageBody":"Add Isaac\u0027s photo","fileTypesAndContributionMap":{}},{"hash":"61a82adb99728962fa839ae4e5d4575a8af97b2a","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":5}}},{"hash":"5113cd9d7fc99cedc785d328f04e6309fb4e01cf","isMergeCommit":false,"messageTitle":"Update site.json","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"24c8319002ecd3f9897975df00bb62c92c672d91","isMergeCommit":false,"messageTitle":"Update site.json","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-09-29","commitResults":[{"hash":"5da95768160f2f8cadb46d608caa37cda08b8df9","isMergeCommit":false,"messageTitle":"Update default.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-02","commitResults":[{"hash":"cd81423e6b75e45dd9255a6031268cc947ef8bdd","isMergeCommit":true,"messageTitle":"Merge pull request #34 from DiegoTheExplorar/update-readme-page","messageBody":"Update readme page","fileTypesAndContributionMap":{}}]},{"date":"2024-10-06","commitResults":[{"hash":"53a36773fad6cab887331bc55e265bae0c31ae8d","isMergeCommit":false,"messageTitle":"Add duplicate detection functionality for EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":90,"deletions":11}}},{"hash":"5bc56ce02394357c972c2e31f719c041c72e3e78","isMergeCommit":false,"messageTitle":"Add duplicate detection functionality for EditCommand","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":39}}},{"hash":"bc18edc848bfa7513332c1bc3bf8a654e17c945e","isMergeCommit":false,"messageTitle":"Update to fit checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":12,"deletions":3}}},{"hash":"60678dbb95e0e4bd7f8eec00ed8c5a2d3615107c","isMergeCommit":false,"messageTitle":"Add unit testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":111,"deletions":46},"test-code":{"insertions":96,"deletions":0}}},{"hash":"f786769d242bdf2239da8f7c8f0cef436ce6eeca","isMergeCommit":false,"messageTitle":"Update for checkstyle","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":14,"deletions":10}}},{"hash":"5269aa5bfda0f4704bc30bed01e3547c1f4920fc","isMergeCommit":false,"messageTitle":"Update unit testing","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":4,"deletions":4}}},{"hash":"338badaf5c90eb1805a26970af367501b14c044e","isMergeCommit":false,"messageTitle":"Update for checkstyle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":4,"deletions":19}}},{"hash":"fc24f5eb9b6183119e6b8d2eab34dcd1e94e405c","isMergeCommit":false,"messageTitle":"Fix unit testing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":6,"deletions":6}}},{"hash":"127e43dd996ef61c605dac42c81d4558b87be680","isMergeCommit":true,"messageTitle":"Merge pull request #50 from appleshill/master","messageBody":"Change for default tag","fileTypesAndContributionMap":{}}]},{"date":"2024-10-12","commitResults":[{"hash":"37a419626663cfb57ea062bbae92c2b546cbd98a","isMergeCommit":false,"messageTitle":"Colour code DuplicatePhone tag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":18,"deletions":2}}},{"hash":"512488fc67547ae49248890fe60321fdc3bd5067","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":11,"deletions":9}}},{"hash":"71227cc7456d7b9ff19982fa13bb347fdacf57b7","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"5cfae6f87772e4d946fbad7b81ff7b9f64666491","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"8318751b3d95ff12ce5c6b1205b80b88642a69d1","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":9,"deletions":10}}},{"hash":"ba745d7054017418cb1045d803b41041bd582055","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1}}},{"hash":"90325efba7fecab2673755a2c53a95df673ff17d","isMergeCommit":false,"messageTitle":"Update files for code coverage","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":36,"deletions":1}}}]}],"appleshill":[{"date":"2024-09-28","commitResults":[{"hash":"25a5cad44b3018111ffbc1468adda4463494025f","isMergeCommit":false,"messageTitle":"Update AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}},{"hash":"1f496b73c7dc719394fdd49ac8aec0a459b94bc6","isMergeCommit":true,"messageTitle":"Merge pull request #23 from RyanWarwick/update-aboutus-ryan","messageBody":"Update AboutUs Ryan","fileTypesAndContributionMap":{}},{"hash":"4468f12f316ef082e42a805ef471be3f3b69472a","isMergeCommit":true,"messageTitle":"Merge pull request #24 from DiegoTheExplorar/update-aboutUs-arvind","messageBody":"Update about us arvind","fileTypesAndContributionMap":{}}]},{"date":"2024-09-29","commitResults":[{"hash":"03644266eb0e37308cc79107e226e6af69818d7f","isMergeCommit":false,"messageTitle":"Update DeveloperGuide.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":2}}},{"hash":"e3df5d3026193a39b375e2da367bedf440528e62","isMergeCommit":true,"messageTitle":"Merge pull request #33 from appleshill/update-dev-guide","messageBody":"Update the DG","fileTypesAndContributionMap":{}}]},{"date":"2024-10-05","commitResults":[{"hash":"c3e2ac87e3ce636f92aaebaccaeb63f8f6930e72","isMergeCommit":false,"messageTitle":"Modify add and edit command","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":223,"deletions":31},"test-code":{"insertions":155,"deletions":30}}}]},{"date":"2024-10-06","commitResults":[{"hash":"3b146be796e2905381fd260a1e196d6f721d5503","isMergeCommit":false,"messageTitle":"Fix checkstyle issues","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":8,"deletions":1}}},{"hash":"15e7c2d141d106193604b19b3fc823f5ea13b16f","isMergeCommit":false,"messageTitle":"Make some test changes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":47,"deletions":14}}},{"hash":"aa1eb7d4ae9ad5a317c77bcc94d2e53dd44b1ea1","isMergeCommit":false,"messageTitle":"More checkstyle fixes","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":11,"deletions":11}}},{"hash":"d98b5b7d3aac1748c85cbc34ce5a558d09aa6bdd","isMergeCommit":false,"messageTitle":"Remove unnecessary file for codecov reasons","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":15}}},{"hash":"3a05b8701bc0428c2c4e6feed1c9c3a1b8258b8b","isMergeCommit":false,"messageTitle":"Improve tests for codecov","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":1},"test-code":{"insertions":112,"deletions":2}}},{"hash":"2585bf310f02b3f1fc15e960943b3de6a6fb0e5e","isMergeCommit":false,"messageTitle":"Fix code to pass tests","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":5,"deletions":0}}},{"hash":"c4d755a1622a7db3c02b78f1af8acebb71afe2d7","isMergeCommit":false,"messageTitle":"Modify Persons to resolve tag issue","messageBody":"","fileTypesAndContributionMap":{"test-code":{"insertions":6,"deletions":0}}},{"hash":"15392b4196724c6ca15ea45adca54120ebfbb36a","isMergeCommit":true,"messageTitle":"Merge pull request #44 from DiegoTheExplorar/add-filter","messageBody":"Add filter","fileTypesAndContributionMap":{}},{"hash":"19a20c3f5dea0011313084b7846804e2d029060e","isMergeCommit":true,"messageTitle":"Merge pull request #47 from valhrd/add-duplicate-detection","messageBody":"Add Duplicate Detection","fileTypesAndContributionMap":{}},{"hash":"9c53030fa98c1f2d8b3082bd79b8c6f89cb8b5e7","isMergeCommit":true,"messageTitle":"Merge pull request #49 from valhrd/duplication-test-fix","messageBody":"Fix Testing for Duplicate Phones","fileTypesAndContributionMap":{}},{"hash":"ead8072c87e53d4d7087d51542a425061472d9e6","isMergeCommit":false,"messageTitle":"Change for default tag","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1},"test-code":{"insertions":1,"deletions":1}}}]},{"date":"2024-10-12","commitResults":[{"hash":"d38c7b169eef484e27e558f2114b22e9b19bd93f","isMergeCommit":true,"messageTitle":"Merge pull request #56 from valhrd/colour-coded-duplicatePhone-tag","messageBody":"Colour code DuplicatePhone tag","fileTypesAndContributionMap":{}},{"hash":"81615b52d76a70560dd489eee1c5337b3179bcb2","isMergeCommit":false,"messageTitle":"Modify frontend to match mockup","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":91,"deletions":15}}}]}]},"authorFileTypeContributionMap":{"frymash":{"docs":5,"functional-code":96,"test-code":63},"RyanWarwick":{"docs":92,"functional-code":0,"test-code":0},"DiegoTheExplorar":{"docs":13,"functional-code":148,"test-code":150},"valhrd":{"docs":6,"functional-code":117,"test-code":135},"appleshill":{"docs":7,"functional-code":298,"test-code":326}},"authorContributionVariance":{"frymash":2314.8315,"RyanWarwick":368.6597,"DiegoTheExplorar":4977.4976,"valhrd":9364.1875,"appleshill":9824.329},"authorDisplayNameMap":{"frymash":"CS2103T-W14-2 ISAA..XUAN","RyanWarwick":"CS2103T-W14-2 RYAN.. HAN","DiegoTheExplorar":"CS2103T-W14-2 ARVI..AJAN","valhrd":"CS2103T-W14-2 HAN ..NTIN","appleshill":"CS2103T-W14-2 SNOD..ETER"}} diff --git a/AY2425S1-CS2103T-W14-3_tp_master/authorship.json b/AY2425S1-CS2103T-W14-3_tp_master/authorship.json index 4b17edd8..a50c5019 100644 --- a/AY2425S1-CS2103T-W14-3_tp_master/authorship.json +++ b/AY2425S1-CS2103T-W14-3_tp_master/authorship.json @@ -1 +1 @@ -[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W14-3/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2425S1-CS2103T-W14-3/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"**HallPointer** is a desktop application specifically designed for CCA (Co-Curricular Activity) leaders in NUS Halls to efficiently manage hall points and member participation. The application allows users to track attendance, allocate points, and maintain member details. While HallPointer features a GUI, most of the interactions are optimized for use with a Command Line Interface (CLI).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":6,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027hallpointer.address.Main\u0027","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" archiveFileName \u003d \u0027hallpointer.jar\u0027","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":"run {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":73}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"taggyhan"},"content":"You can reach us at the email seer[at]comp.nus.edu.sg","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"QinHaichen12"},"content":"### Qin Haichen","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"QinHaichen12"},"content":"\u003cimg src\u003d\"images/qinhaichen12.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"QinHaichen12"},"content":"[[github](https://github.com/QinHaichen12)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"QinHaichen12"},"content":"[[portfolio](team/qinhaichen12.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":"- Responsibilities: Data, UI","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yuvrajaryan"},"content":"### Yuvraj Aryan Singh","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yuvrajaryan"},"content":"\u003cimg src\u003d\"images/yuvrajaryan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yuvrajaryan"},"content":"[[github](http://github.com/yuvrajaryan)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yuvrajaryan"},"content":"[[portfolio](team/yuvrajaryan.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":"- Responsibilities: Data, UI","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":"### Daniel Lai","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":"\u003cimg src\u003d\"images/starchypotatocode.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"[[github](http://github.com/starchypotatocode)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"[[portfolio](team/starchypotatocode.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":"- Responsibilities: Testing, Integration","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"### Keith Ong","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":"\u003cimg src\u003d\"images/keithxun.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":"[[github](http://github.com/keithxun)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":"[[portfolio](team/keithxun.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"taggyhan"},"content":"- Responsibilities: UI","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"taggyhan"},"content":"### Tag Han","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"taggyhan"},"content":"\u003cimg src\u003d\"images/taggyhan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":"[[github](https://github.com/taggyhan)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"taggyhan"},"content":"[[portfolio](team/taggyhan.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"taggyhan"},"content":"- Responsibilities: UI, Scheduling and tracking","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"yuvrajaryan":4,"taggyhan":13,"QinHaichen12":4,"starchypotatocode":6,"-":31,"keithxun":5}},{"path":"docs/DevOps.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"DevOps guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# DevOps guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c!-- -------------------------------------------------------------------------------------------------------------------- --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## Build automation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"This project uses Gradle for **build automation and dependency management**. **You are recommended to read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html)**.","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"Given below are how to use Gradle for some important project tasks.","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **`clean`**: Deletes the files created during the previous build tasks (e.g. files in the `build` folder).\u003cbr\u003e","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" e.g. `./gradlew clean`","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **`shadowJar`**: Uses the ShadowJar plugin to creat a fat JAR file in the `build/lib` folder, *if the current file is outdated*.\u003cbr\u003e","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" e.g. `./gradlew shadowJar`.","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"* **`run`**: Builds and runs the application.\u003cbr\u003e","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" **`runShadow`**: Builds the application as a fat JAR, and then runs it.","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"* **`checkstyleMain`**: Runs the code style check for the main code base.\u003cbr\u003e","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" **`checkstyleTest`**: Runs the code style check for the test code base.","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"* **`test`**: Runs all tests.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `./gradlew test` — Runs all tests","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `./gradlew clean test` — Cleans the project and runs tests","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"## Continuous integration (CI)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"This project uses GitHub Actions for CI. The project comes with the necessary GitHub Actions configurations files (in the `.github/workflows` folder). No further setting up required.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"### Code coverage","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"As part of CI, this project uses Codecov to generate coverage reports. When CI runs, it will generate code coverage data (based on the tests run by CI) and upload that data to the CodeCov website, which in turn can provide you more info about the coverage of your tests.","lastModifiedDate":"2023-02-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"However, because Codecov is known to run into intermittent problems (e.g., report upload fails) due to issues on the Codecov service side, the CI is configured to pass even if the Codecov task failed. Therefore, developers are advised to check the code coverage levels periodically and take corrective actions if the coverage level falls below desired levels.","lastModifiedDate":"2023-02-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"To enable Codecov for forks of this project, follow the steps given in [this se-edu guide](https://se-education.org/guides/tutorials/codecov.html).","lastModifiedDate":"2023-02-02","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"### Repository-wide checks","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"In addition to running Gradle checks, CI includes some repository-wide checks. Unlike the Gradle checks which only cover files used in the build process, these repository-wide checks cover all files in the repository. They check for repository rules which are hard to enforce on development machines such as line ending requirements.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"These checks are implemented as POSIX shell scripts, and thus can only be run on POSIX-compliant operating systems such as macOS and Linux. To run all checks locally on these operating systems, execute the following in the repository root directory:","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"`./config/travis/run-checks.sh`","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"Any warnings or errors will be printed out to the console.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"**If adding new checks:**","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Checks are implemented as executable `check-*` scripts within the `.github` directory. The `run-checks.sh` script will automatically pick up and run files named as such. That is, you can add more such files if you need and the CI will do the rest.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"* Check scripts should print out errors in the format `SEVERITY:FILENAME:LINE: MESSAGE`","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * SEVERITY is either ERROR or WARN.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * FILENAME is the path to the file relative to the current directory.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * LINE is the line of the file where the error occurred and MESSAGE is the message explaining the error.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"* Check scripts must exit with a non-zero exit code if any errors occur.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"## Making a release","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"Here are the steps to create a new release.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":"1. Update the version number in [`MainApp.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/MainApp.java).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"1. Generate a fat JAR file using Gradle (i.e., `gradlew shadowJar`).","lastModifiedDate":"2021-08-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"1. Tag the repo with the version number. e.g. `v0.1`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"1. [Create a new release using GitHub](https://help.github.com/articles/creating-releases/). Upload the JAR file you created.","lastModifiedDate":"2020-05-26","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":81}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# HallPointer Developer Guide","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":"The **_Architecture Diagram_** given above explains the high-level design of the App.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"**`Main`** (consisting of classes [`Main`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/Main.java) and [`MainApp`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":"- At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":"- At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"- [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":"- [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":"- [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":"- [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"content":"The _Sequence Diagram_ below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":"- defines its _API_ in an `interface` with the same name as the Component.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"keithxun"},"content":"- implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":"The **API** of this component is specified in [`Ui.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/ui/Ui.java)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `MemberListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"keithxun"},"content":"- executes user commands using the `Logic` component.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"keithxun"},"content":"- listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"keithxun"},"content":"- keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"keithxun"},"content":"- depends on some classes in the `Model` component, as it displays `Member` object residing in the `Model`.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":"**API** : [`Logic.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/logic/Logic.java)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"starchypotatocode"},"content":"2. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":"3. The command can communicate with the `Model` when it is executed (e.g. to delete a member).\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":"4. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"keithxun"},"content":"- When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"keithxun"},"content":"- All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":"**API** : [`Model.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/model/Model.java)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"keithxun"},"content":"- stores the address book data i.e., all `Member` objects (which are contained in a `UniqueMemberList` object).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"keithxun"},"content":"- stores the currently \u0027selected\u0027 `Member` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cMember\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"keithxun"},"content":"- stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"keithxun"},"content":"- does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"starchypotatocode"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Member` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Member` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":"**API** : [`Storage.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/storage/Storage.java)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"keithxun"},"content":"- can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"keithxun"},"content":"- inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"keithxun"},"content":"- depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `hallpointer.address.commons` package.","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"keithxun"},"content":"- `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"keithxun"},"content":"- `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"keithxun"},"content":"- `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"starchypotatocode"},"content":"Step 2. The user executes `delete 5` command to delete the 5th member in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"starchypotatocode"},"content":"Step 3. The user executes `add n/David …​` to add a new member. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"starchypotatocode"},"content":"Step 4. The user now decides that adding the member was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"keithxun"},"content":"- **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"keithxun"},"content":" - Pros: Easy to implement.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"keithxun"},"content":" - Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"keithxun"},"content":"- **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"keithxun"},"content":" - Pros: Will use less memory (e.g. for `delete`, just save the member being deleted).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"keithxun"},"content":" - Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"keithxun"},"content":"- [Documentation guide](Documentation.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"keithxun"},"content":"- [Testing guide](Testing.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"keithxun"},"content":"- [Logging guide](Logging.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"keithxun"},"content":"- [Configuration guide](Configuration.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"keithxun"},"content":"- [DevOps guide](DevOps.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"keithxun"},"content":"- is a CCA leader in a NUS Hall","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"keithxun"},"content":"- is responsible for managing member participation, tracking attendance, and allocating points","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"keithxun"},"content":"- prefers streamlined solutions to minimize manual administrative work","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"keithxun"},"content":"- comfortable with both desktop and command-line interfaces (CLI)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"keithxun"},"content":"- often managing multiple responsibilities, including academic workload and hall duties","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"yuvrajaryan"},"content":"**Value proposition**: Hall Pointer empowers CCA leaders in NUS Halls to efficiently manage member tracking by streamlining participation recording, points allocation, and member information (such as room addresses). It simplifies manual data management, allowing leaders to focus on organizing activities rather than administrative tasks. Ideal for small, close-knit CCAs, it ensures quick access to updated information, enabling accurate and easy sharing of participation records with hall management or other stakeholders.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"keithxun"},"content":"| Priority | As a …​ | I want to …​ | So that I can …​ | Remarks/Notes |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"keithxun"},"content":"| -------- | --------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | Explore the app using sample data | I can understand its features without manually entering data | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | See a guide on how to use the app | I can better understand its functionalities | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | Save the changes I made | I won’t have to redo my work after reopening the app | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | See sample data with a predefined structure | I have a format to follow when inputting my own data | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | Delete all data in the app | I can start over when I make a mistake and remove sample data | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"keithxun"},"content":"| `* * *` | User | Add new users to the app | I can track points for new Hall members | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"keithxun"},"content":"| `* * *` | User | Delete existing users from the app | I can stop tracking points for ex-Hall members | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"keithxun"},"content":"| `* * *` | User | Customize point allocation criteria | I can reward members based on different participation criteria | E.g., different point weights for different activities |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"keithxun"},"content":"| `* * *` | Frequent user | Add or delete points for each member | I can track the overall participation status in the CCA | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"keithxun"},"content":"| `* * *` | Frequent user | Adjust attendance records if there are any errors | I can fix mistakes and maintain accurate records | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"keithxun"},"content":"| `* * *` | Frequent user | Filter the data to see members with low attendance | I can identify which members need attention | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"keithxun"},"content":"| `* * *` | User | Edit member details (e.g., name, contact) | I can keep the member database up to date | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"keithxun"},"content":"| `* *` | First-time user | Import data from an existing Google Sheets document or csv file | I can quickly upload my data without manual entry | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"keithxun"},"content":"| `* *` | Frequent user | Automatically track attendance at each session | I don\u0027t need to manually mark attendance for each session | Using QR codes? That would need some kind of integration though, would be complicated |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"keithxun"},"content":"| `* *` | Frequent user | See a breakdown of points for each member quickly | I can monitor attendance records without navigating multiple screens | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"keithxun"},"content":"| `* *` | Frequent user | Export attendance data | I can share participation reports with other stakeholders if needed | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"keithxun"},"content":"| `* *` | User | Bulk update attendance or points for multiple members | I can efficiently manage large groups | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"keithxun"},"content":"| `* *` | User | Set up custom attendance categories (e.g., Excused, Late) | I can categorize different types of attendance | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"keithxun"},"content":"| `* *` | User | View analytics or visual reports of attendance and participation | I can see trends and member engagement at a glance | Charts or graphs to visualize data |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"keithxun"},"content":"| `*` | User | Sort members by name | I can locate a member easily | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"keithxun"},"content":"| `*` | Frequent user | Automatically save changes without manual intervention | I don’t lose progress if I forget to click save | Auto-save feature |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"keithxun"},"content":"| `*` | Expert user | Perform all actions using the CLI | I can interact with the app more efficiently without relying on the GUI | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"keithxun"},"content":"| `*` | Expert user | Automate repetitive tasks, such as attendance updates | I can save time by reducing manual input | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"keithxun"},"content":"| `*` | User | Add notes for each member | I can track special situations or reasons for absences | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC01 - Add Member to CCA","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"QinHaichen12"},"content":"**Description**: This use case allows a CCA leader to add a new member to the CCA for attendance tracking and point allocation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"QinHaichen12"},"content":"1. The CCA Leader must know the details of the new member.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"starchypotatocode"},"content":"1. CCA Leader inputs the `add_member` command with required details (name, room number, and telegram).","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"QinHaichen12"},"content":" - Example: `add_member /name John Doe /room 4/3/301 /tele johndoe123`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer validates the entered details for the new member.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"QinHaichen12"},"content":"3. Hall Pointer adds the member to the system and displays a success message.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"QinHaichen12"},"content":"4. The new member is displayed in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"QinHaichen12"},"content":"- **2a. Hall Pointer detects an error in the entered data**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer requests for correct data with an error message indicating the invalid field.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"QinHaichen12"},"content":" - 2a2. CCA Leader re-enters corrected data.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"QinHaichen12"},"content":" - Steps 2a1-2a2 are repeated until all data is correct.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"QinHaichen12"},"content":" - Use case resumes from step 3.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"QinHaichen12"},"content":"- **2b. Duplicate member is detected**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"QinHaichen12"},"content":" - 2b1. Hall Pointer displays an error message: `Error: Member John Doe already exists.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"QinHaichen12"},"content":"- **\\*a. At any time, CCA Leader chooses to cancel the add member operation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"QinHaichen12"},"content":" - \\*a1. Hall Pointer requests confirmation of the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"QinHaichen12"},"content":" - \\*a2. CCA Leader confirms the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"QinHaichen12"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC02 - Add Session to CCA","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"QinHaichen12"},"content":"**Description**: This use case allows a CCA leader to add a new CCA session to the system for tracking attendance and point allocation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"QinHaichen12"},"content":"1. The CCA Leader must know the details of the session such as name, date, and points.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"QinHaichen12"},"content":"1. CCA Leader inputs the `add_session` command with session details (name, date, and points).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"QinHaichen12"},"content":" - Example: `add_session rehearsal /date 2024-09-19 /points 2`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer validates the entered session details.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"QinHaichen12"},"content":"3. Hall Pointer adds the session to the system and displays a success message.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"QinHaichen12"},"content":"4. The new session is displayed in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"QinHaichen12"},"content":"- **2a. Hall Pointer detects an error in the entered data**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer requests for correct data with an error message indicating the invalid field.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"QinHaichen12"},"content":" - 2a2. CCA Leader re-enters corrected data.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"QinHaichen12"},"content":" - Steps 2a1-2a2 are repeated until all data is correct.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"QinHaichen12"},"content":" - Use case resumes from step 3.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"QinHaichen12"},"content":"- **2b. Duplicate session is detected**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"QinHaichen12"},"content":" - 2b1. Hall Pointer displays an error message: `Error: Session rehearsal already exists.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"QinHaichen12"},"content":"- **\\*a. At any time, CCA Leader chooses to cancel the add session operation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"QinHaichen12"},"content":" - \\*a1. Hall Pointer requests confirmation of the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"QinHaichen12"},"content":" - \\*a2. CCA Leader confirms the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"QinHaichen12"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC03 - Mark Member Present for a Session","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"QinHaichen12"},"content":"**Description**: This use case allows a CCA leader to mark a member as present for a specific CCA session.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"QinHaichen12"},"content":"1. The member and session must exist in the system.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"QinHaichen12"},"content":"1. CCA Leader inputs the `mark_present` command with the member name and session name.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"QinHaichen12"},"content":" - Example: `mark_present John Doe /session volleyball training`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer validates the member and session details.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"QinHaichen12"},"content":"3. Hall Pointer records the attendance and displays a success message:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"QinHaichen12"},"content":" - `Attendance recorded for John Doe on volleyball training.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"QinHaichen12"},"content":"4. The updated attendance is reflected in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"QinHaichen12"},"content":"- **2a. Member or session not found**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer displays an error message indicating the missing entity.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"QinHaichen12"},"content":" - `Failed to log attendance: member or session does not exist.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"QinHaichen12"},"content":"- **\\*a. At any time, CCA Leader chooses to cancel the mark present operation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"QinHaichen12"},"content":" - \\*a1. Hall Pointer requests confirmation of the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"QinHaichen12"},"content":" - \\*a2. CCA Leader confirms the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"QinHaichen12"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC04 - Update Member Information","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"starchypotatocode"},"content":"**Description**: This use case allows a CCA leader to update the details of an existing member, such as room number, telegram, or tags.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"QinHaichen12"},"content":"1. The member to be updated must exist in the system.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"QinHaichen12"},"content":"1. CCA Leader inputs the `update_member` command with the member name and new details.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"QinHaichen12"},"content":" - Example: `update_member John Doe /room 9/10/203 /tag friend`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer validates the member and new details.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"QinHaichen12"},"content":"3. Hall Pointer updates the member information and displays a success message.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"QinHaichen12"},"content":" - `Member John Doe\u0027s room updated to 9/10/203.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"QinHaichen12"},"content":"4. The updated member information is displayed in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"QinHaichen12"},"content":"- **2a. Member not found**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer displays an error message:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"QinHaichen12"},"content":" - `Error: Member with the given name could not be found.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"QinHaichen12"},"content":"- **\\*a. At any time, CCA Leader chooses to cancel the update operation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"QinHaichen12"},"content":" - \\*a1. Hall Pointer requests confirmation of the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"QinHaichen12"},"content":" - \\*a2. CCA Leader confirms the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"QinHaichen12"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC05 - View All Members","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"QinHaichen12"},"content":"**Description**: This use case allows a CCA leader to view a list of all members in the system.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"QinHaichen12"},"content":"None.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"QinHaichen12"},"content":"1. CCA Leader inputs the `list_members` command.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer retrieves and displays all members in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"QinHaichen12"},"content":"- **2a. No members found**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer displays an error message:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"QinHaichen12"},"content":" - `Error: No members found.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"starchypotatocode"},"content":"2. Should be able to hold up to 1000 members without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"keithxun"},"content":"3. A user with above-average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"keithxun"},"content":"4. The application should respond to user commands within 2 seconds under normal operating conditions.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"keithxun"},"content":"5. The user interface should be intuitive enough for a first-time user to understand basic functionalities without external help.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"keithxun"},"content":"6. While primarily designed for one user, the application should be able to handle up to 1000 members efficiently, with room for future enhancements.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"keithxun"},"content":"7. The application should have a success rate of at least 95% for command executions, ensuring that most user actions are completed successfully without errors.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"keithxun"},"content":"8. Code should be organized and documented to facilitate future updates or modifications.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"keithxun"},"content":"9. The application should run seamlessly across different operating systems without requiring extensive configuration.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"taggyhan"},"content":"1. **Hall Pointer:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"taggyhan"},"content":" A desktop application used by CCA leaders in NUS Halls to track hall points, manage member participation, attendance, and allocate points. It is optimized for Command Line Interface (CLI) usage but also includes a Graphical User Interface (GUI).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"taggyhan"},"content":"2. **CLI (Command Line Interface):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"taggyhan"},"content":" A text-based interface where users interact with the application by typing commands, making it efficient for users comfortable with fast typing.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"taggyhan"},"content":"3. **GUI (Graphical User Interface):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"taggyhan"},"content":" A visual interface that allows users to interact with the application using graphical components like buttons and menus, in addition to CLI commands.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"taggyhan"},"content":"4. **Member:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"starchypotatocode"},"content":" A participant or member of a CCA (Co-Curricular Activity) in NUS Halls, whose details are tracked in the Hall Pointer system (e.g., name, telegram, points, and attendance).","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"taggyhan"},"content":"5. **Points Allocation:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"taggyhan"},"content":" The process of awarding hall points to members based on their participation in activities. CCA leaders can customize the criteria for point allocation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"taggyhan"},"content":"6. **CCA (Co-Curricular Activity):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"taggyhan"},"content":" A club or activity within an NUS Hall that tracks member participation and points. Hall Pointer helps CCA leaders manage their members more efficiently.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"taggyhan"},"content":"7. **Gradle:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"taggyhan"},"content":" A build automation tool used in Hall Pointer for compiling code, managing dependencies, and running tasks such as testing and creating JAR files.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"taggyhan"},"content":"8. **JUnit:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"taggyhan"},"content":" A testing framework for Java, used in Hall Pointer to run automated tests on individual units of the system and ensure code correctness.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"taggyhan"},"content":"9. **ShadowJar:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"taggyhan"},"content":" A Gradle task that generates a fat JAR file, which bundles the application and its dependencies into a single JAR for distribution.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"taggyhan"},"content":"10. **GitHub Actions:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"taggyhan"},"content":" A Continuous Integration (CI) tool integrated with GitHub to automatically test and build the Hall Pointer application whenever new changes are pushed.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"taggyhan"},"content":"11. **Codecov:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"taggyhan"},"content":" A tool that tracks code coverage during testing. It helps assess how much of the Hall Pointer code is covered by tests, encouraging improvements to the test suite.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"taggyhan"},"content":"12. **Fat JAR:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"taggyhan"},"content":" A JAR file that contains the entire application along with all its dependencies, allowing Hall Pointer to run as a standalone application.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"taggyhan"},"content":"13. **POSIX-compliant OS:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"taggyhan"},"content":" Operating systems like Linux and macOS that adhere to POSIX standards and are compatible with shell scripts used for CI tasks in Hall Pointer.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"taggyhan"},"content":"14. **Tag:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"taggyhan"},"content":" Labels or categories assigned to members in the Hall Pointer system (e.g., `leader`, `active`, `inactive`). Tags help classify and manage members more easily.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"taggyhan"},"content":"15. **Undo/Redo Feature:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":543,"author":{"gitId":"taggyhan"},"content":" A proposed feature that allows users to revert or redo changes in Hall Pointer, enabling easy correction of mistakes.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":544,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"taggyhan"},"content":"16. **Versioned AddressBook:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"taggyhan"},"content":" Refers to a version of the Hall Pointer system where the state of member data is saved at specific intervals to allow undo/redo functionality.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"taggyhan"},"content":"17. **Test Coverage:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"taggyhan"},"content":" A metric that measures how much of the Hall Pointer codebase is covered by tests, indicating the effectiveness and thoroughness of the test suite.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"taggyhan"},"content":"18. **User Preferences:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"taggyhan"},"content":" Settings such as window size and logging levels that can be customized by users and saved in a configuration file (`config.json`) for Hall Pointer.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"taggyhan"},"content":"19. **Configuration File (`config.json`):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"taggyhan"},"content":" A JSON file that stores user preferences and application settings for Hall Pointer, including file locations and logging levels.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"taggyhan"},"content":"20. **Build Automation:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"taggyhan"},"content":" The process of automating the compilation, testing, and packaging of Hall Pointer using Gradle to ensure consistent builds across different environments.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"taggyhan"},"content":"21. **Continuous Integration (CI):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"taggyhan"},"content":" A practice used in Hall Pointer, powered by GitHub Actions, where tests and checks are run automatically to verify the integrity of new code changes before merging.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"taggyhan"},"content":"22. **Unit Test:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"taggyhan"},"content":" A test that targets individual components or methods in the Hall Pointer system to ensure they function correctly in isolation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"taggyhan"},"content":"23. **Integration Test:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"taggyhan"},"content":" A test that checks how different components in Hall Pointer interact with each other, ensuring they work together as expected.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"taggyhan"},"content":"24. **Hybrid Test:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"taggyhan"},"content":" A combination of unit and integration testing that checks both the individual components and their interactions in the Hall Pointer system.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"taggyhan"},"content":"25. **Command:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"taggyhan"},"content":" A typed instruction input by the user in the CLI to perform an action in Hall Pointer, such as adding members, editing details, or tracking points (e.g., `add`, `list`, `delete`).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"keithxun"},"content":"testers are expected to do more _exploratory_ testing.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":584,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":588,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"starchypotatocode"},"content":" 2. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"starchypotatocode"},"content":"2. Saving window preferences","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":596,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"starchypotatocode"},"content":" 2. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"starchypotatocode"},"content":"3. _{ more test cases …​ }_","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":602,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"starchypotatocode"},"content":"### Deleting a member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"starchypotatocode"},"content":"1. Deleting a member while all members are being shown","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":607,"author":{"gitId":"starchypotatocode"},"content":" 1. Prerequisites: List all members using the `list` command. Multiple members in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"starchypotatocode"},"content":" 2. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":610,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"starchypotatocode"},"content":" 3. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"starchypotatocode"},"content":" Expected: No member is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"starchypotatocode"},"content":" 4. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"starchypotatocode"},"content":"2. _{ more test cases …​ }_","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":619,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":620,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":621,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":622,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":623,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":624,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":625,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":626,"author":{"gitId":"starchypotatocode"},"content":"2. _{ more test cases …​ }_","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"yuvrajaryan":1,"taggyhan":72,"QinHaichen12":149,"starchypotatocode":31,"-":288,"keithxun":85}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# HallPointer User Guide","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"1. Download the latest `.jar` file from [here](https://ay2425s1-cs2103t-w14-3.github.io/releases).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar hallpointer.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" * `add n/John Doe tg/98765432 r/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" e.g. if the command specifies `n/NAME tg/TELEGRAM`, `tg/TELEGRAM n/NAME` is also acceptable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":"### Adding a member: `add`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":"Adds a member to the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":"Format: `add n/NAME tg/TELEGRAM r/ROOM [t/TAG]…​`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":"**Tip:** A member can have any number of tags (including 0)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":"* `add n/John Doe tg/98765432 r/John street, block 123, #01-01`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":"* `add n/Betsy Crowe t/friend r/Newgate Prison tg/1234567 t/criminal`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":"### Listing all members : `list`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":"Shows a list of all members in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":"### Editing a member : `edit`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"starchypotatocode"},"content":"Edits an existing member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":"Format: `edit INDEX [n/NAME] [tg/TELEGRAM] [r/ROOM] [t/TAG]…​`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":"* Edits the member at the specified `INDEX`. The index refers to the index number shown in the displayed member list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":"* When editing tags, the existing tags of the member will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":"* You can remove all the member’s tags by typing `t/` without","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":"* `edit 1 tg/91234567 n/Johnson Doe` Edits the telegram and name of the 1st member to be `91234567` and `Johnson Doe` respectively.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd member to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":"### Locating members by name: `find`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":"Finds members whose names contain any of the given keywords.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"starchypotatocode"},"content":"* Members matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"starchypotatocode"},"content":"### Deleting a member : `delete`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"starchypotatocode"},"content":"Deletes the specified member from the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"starchypotatocode"},"content":"* Deletes the member at the specified `INDEX`.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"starchypotatocode"},"content":"* The index refers to the index number shown in the displayed member list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":"* `list` followed by `delete 2` deletes the 2nd member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st member in the results of the `find` command.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"starchypotatocode"},"content":"**Add** | `add n/NAME tg/TELEGRAM r/ROOM [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho tg/22224444 r/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"starchypotatocode"},"content":"**Edit** | `edit INDEX [n/NAME] [tg/TELEGRAM] [r/ROOM] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee tg/99998888`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":31,"-":174}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eHallPointer\u003c/a\u003e","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/ay2425s1-cs2103t-w14-3/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":66}},{"path":"docs/diagrams/ArchitectureSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"Actor User as user USER_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":UI\" as ui UI_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":Logic\" as logic LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \":Model\" as model MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"Participant \":Storage\" as storage STORAGE_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"user -[USER_COLOR]\u003e ui : \"delete 1\"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"activate ui UI_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"delete 1\")","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate logic LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"logic -[LOGIC_COLOR]\u003e model : deleteMember(p)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate model MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"model -[MODEL_COLOR]-\u003e logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"deactivate model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"logic -[LOGIC_COLOR]\u003e storage : saveAddressBook(addressBook)","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"storage -[STORAGE_COLOR]\u003e storage : Save to file","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR_T1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e storage","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"logic --[LOGIC_COLOR]\u003e ui","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"deactivate logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"ui--[UI_COLOR]\u003e user","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate ui","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":38}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"AddressBook *-right-\u003e \"1\" UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"UniqueTagList -[hidden]down- UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"UniqueTagList -[hidden]down- UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"UniqueTagList -right-\u003e \"*\" Tag","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"UniqueMemberList -right-\u003e Member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"Member -up-\u003e \"*\" Tag","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Name","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":8,"-":12}},{"path":"docs/diagrams/DeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \":DeleteCommandParser\" as DeleteCommandParser LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"participant \"d:DeleteCommand\" as DeleteCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"[-\u003e LogicManager : execute(\"delete 1\")","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete 1\")","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"1\")","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"DeleteCommandParser -\u003e DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser :","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"DeleteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":"DeleteCommand -\u003e Model : deleteMember(1)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"Model --\u003e DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e CommandResult","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"CommandResult --\u003e DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":69}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"Class UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"Class Member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"Class Telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":"AddressBook *--\u003e \"1\" UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"UniqueMemberList --\u003e \"~* all\" Member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Name","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Address","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e \"*\" Tag","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":"Member -[hidden]up--\u003e I","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":"UniqueMemberList -[hidden]right-\u003e I","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":"Name -[hidden]right-\u003e Telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":"Telegram -[hidden]right-\u003e Address","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":"ModelManager --\u003e \"~* filtered\" Member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":14,"-":37}},{"path":"docs/diagrams/StorageClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor STORAGE_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor STORAGE_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"UserPrefs Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUserPrefsStorage\" as UserPrefsStorage","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class JsonUserPrefsStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class StorageManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"package \"AddressBook Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nAddressBookStorage\" as AddressBookStorage","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class JsonAddressBookStorage","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class JsonSerializableAddressBook","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"Class JsonAdaptedMember","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedMember","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"JsonAdaptedMember --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":40}},{"path":"docs/diagrams/UiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class UiManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class MainWindow","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class HelpWindow","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"Class MemberListPanel","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"Class MemberCard","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":"MainWindow *-down-\u003e \"1\" MemberListPanel","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"MemberListPanel -down-\u003e \"*\" MemberCard","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":"MemberListPanel --|\u003e UiPart","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":"MemberCard --|\u003e UiPart","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":"MemberCard ..\u003e Model","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":"MemberListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":8,"-":52}},{"path":"docs/diagrams/tracing/LogicSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include ../style.puml","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"Participant \":LogicManager\" as logic LOGIC_COLOR","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":AddressBookParser\" as abp LOGIC_COLOR","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":EditCommandParser\" as ecp LOGIC_COLOR","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \"command:EditCommand\" as ec LOGIC_COLOR","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"[-\u003e logic : execute","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate logic","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"logic -\u003e abp ++: parseCommand(commandText)","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"create ecp","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"abp -\u003e ecp","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"abp -\u003e ecp ++: parse(arguments)","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"create ec","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"ecp -\u003e ec ++: index, editMemberDescriptor","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"ec --\u003e ecp --","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"ecp --\u003e abp --: command","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"abp --\u003e logic --: command","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-06-17","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":21}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"taggyhan"},"content":" title: \"HallPointer\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"# HallPointer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W14-3/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2425S1-CS2103T-W14-3/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"[![codecov](https://codecov.io/gh/ay2425s1-cs2103t-w14-3/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/ay2425s1-cs2103t-w14-3/tp)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"taggyhan"},"content":"**HallPointer** is a desktop application specifically designed for CCA (Co-Curricular Activity) leaders in NUS Halls to efficiently manage hall points and member participation. The application allows users to track attendance, allocate points, and maintain member details. While HallPointer features a GUI, most of the interactions are optimized for use with a Command Line Interface (CLI).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"taggyhan"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"taggyhan"},"content":"### Key Features","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"taggyhan"},"content":"- **Manage Members:** Add, edit, delete, and view CCA members easily.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"taggyhan"},"content":"- **Track Attendance:** Record participation in events and track members with low attendance.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":"- **Allocate Points:** Customize and track hall points based on member participation in activities.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":"- **Efficient CLI-based Commands:** Perform tasks quickly using CLI commands for users familiar with typing.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"taggyhan"},"content":"- **Undo/Redo Support:** A proposed feature for reverting changes to ensure accurate management.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"taggyhan"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"taggyhan"},"content":"### Getting Started","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"taggyhan"},"content":"- If you are a user interested in using **HallPointer**, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.md#quick-start) for instructions on how to set up and begin using the application.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":"- If you are interested in contributing to or developing **HallPointer**, the [**Developer Guide**](DeveloperGuide.md) provides detailed technical information and instructions to help you get started.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"taggyhan"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"taggyhan"},"content":"### Acknowledgements","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"taggyhan"},"content":"- **Libraries used:**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"taggyhan"},"content":" - [JavaFX](https://openjfx.io/) - for building the graphical user interface.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"taggyhan"},"content":" - [Jackson](https://github.com/FasterXML/jackson) - for JSON processing.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"taggyhan"},"content":" - [JUnit5](https://github.com/junit-team/junit5) - for testing the application.","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"taggyhan":25,"starchypotatocode":3,"-":12}},{"path":"docs/team/keithxun.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"keithxun"},"content":"# Keith Ong","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"keithxun"},"content":"- **Phone**: +65 87202723","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"keithxun"},"content":"- **Email**: [keithonghx@gmail.com](mailto:keithonghx@gmail.com)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"keithxun"},"content":"- **GitHub**: [https://github.com/keithxun](https://github.com/keithxun)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"keithxun"},"content":"## Education","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":"**National University of Singapore**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":"_Bachelor of Computing_ (Aug 2023 – Aug 2027)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":"**GPA**: 4.8","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"keithxun"},"content":"## Achievements","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"keithxun"},"content":"- **Dean\u0027s List** - AY 23/24 Sem 1","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"keithxun"},"content":"- **What The Hack Hackathon** – Developed a Green Web Application to Reduce Carbon Footprint","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"keithxun"},"content":"- **RHdev Hackathon** – Created a Web \u0026 Telegram Application for Canvas Notifications","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"keithxun"},"content":"- **IRC-SET 2020 Publication** – Precision Ellipsometry System under A\\*STAR","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"keithxun"},"content":"## Work Experience","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"keithxun"},"content":"### Process Automation Intern","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"keithxun"},"content":"_CPF Board, Singapore_ (May 2024 – Aug 2024)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":"- Developed a **UIPath script** incorporating **computer vision** and **OCR technologies** to automate access applications, saving over 100 hours annually.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"keithxun"},"content":"- Implemented a category sorting system using the **Mistral Model** and **LLMs**, reducing misclassification by 40%.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"keithxun"},"content":"- Led project management for a **gamification app** for agents, overseeing requirements gathering and timeline management.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"keithxun"},"content":"- **Tech Stack**: UIPath, Python, OCR, Computer Vision, LLMs, Microsoft PowerApps","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"keithxun"},"content":"### Software Engineer (SWE), Project Sabai","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":"_YYL SOM, Singapore \u0026 Cambodia_ (Dec 2023 - Present)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":"- Maintained and enhanced a **biometric web application** for clinical use with a team of 21.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"keithxun"},"content":"- Refactored codebase to improve performance in poor internet conditions in Cambodia and ensure future scalability.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"keithxun"},"content":"- Revamped the **user interface** to improve user experience.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"keithxun"},"content":"- **Tech Stack**: React, Next.js, Tailwind CSS, Django, PostgreSQL, Vercel, New Relic, Auth0","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":"### Research Intern","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":"*A*STAR, Singapore\\* (Jan 2019 - Feb 2020)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":"- Engineered a portable **precision ellipsometry system** for use with liquids, under the guidance of Dr. Nikolai Yakovlev.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"content":"## Publications and Presentations","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"keithxun"},"content":"- **IRC-SET 2020**: Published and presented on the **Precision Ellipsometry System**, designed for portability and use with liquid samples in field settings.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":"**[GitHub](https://github.com/keithxun)** | **[Email](mailto:keithonghx@gmail.com)** | **Phone**: +65 87202723","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"keithxun":60}},{"path":"docs/team/qinhaichen12.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"QinHaichen12"},"content":"# Qin Haichen","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"QinHaichen12"},"content":"- **HP**: 93691698","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"QinHaichen12"},"content":"- **Email**: [haichensurfs@gmail.com](mailto:haichensurfs@gmail.com)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"QinHaichen12"},"content":"- **LinkedIn profile**: [LinkedIn Profile](#)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"QinHaichen12"},"content":"- **Availability**: Available for internship Jan – Jun and May - Aug","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"QinHaichen12"},"content":"## Education","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"QinHaichen12"},"content":"### National University of Singapore","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"QinHaichen12"},"content":"**Aug 2023 - Jul 2027**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"QinHaichen12"},"content":"- Bachelor of Computing in Computer Science","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"QinHaichen12"},"content":" - Current GPA: 5.00/5.00 (Highest Distinction)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"QinHaichen12"},"content":" - Top scorer for Data Structures and Algorithms and Programming Methodology II","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"QinHaichen12"},"content":" - Obtained top 8 in a robotics contest organized by the School of Computing","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"QinHaichen12"},"content":"- Bachelor of Science in Mathematics","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"QinHaichen12"},"content":" - Current GPA: 5.00/5.00 (Highest Distinction)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"QinHaichen12"},"content":" - Obtained highest grade (A+) in Calculus, Linear Algebra, and Probability","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"QinHaichen12"},"content":"### NUS High School of Mathematics and Science","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"QinHaichen12"},"content":"**Jan 2015 - Dec 2020**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"QinHaichen12"},"content":"- NUS High School Diploma with Honours in Chemistry, Physics, and Mathematics","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"QinHaichen12"},"content":" - Graduated with a Cumulative Average Point (CAP) of 4.8/5.0","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"QinHaichen12"},"content":" - Part of the National Team for Physics Olympiad","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"QinHaichen12"},"content":" - Gold Medal for Singapore Physics Olympiad","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"QinHaichen12"},"content":" - Gold Medal for Singapore Maths Olympiad","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"QinHaichen12"},"content":"## Projects","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"QinHaichen12"},"content":"- Collaborated with a team of four to create a mobile app with Unity engine and C# incorporating AR functionalities within 3 days and trained a Machine Learning model using YOLO_v8 for animal image recognition leveraging Python and TensorFlow.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"QinHaichen12"},"content":"- Deployed a full-stack web application on Vercel platform that enables users to create and participate in prediction challenges using Next.js for frontend and Supabase for backend database management.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"QinHaichen12"},"content":"## Technical Skills","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"QinHaichen12"},"content":"- **Languages**: Java, Python, Javascript, PostgreSQL, C#, C++","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"QinHaichen12"},"content":"- **Frameworks**: React, Next.js","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"QinHaichen12"},"content":"## Work Experience","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"QinHaichen12"},"content":"### Part Time Tutor (Self-employed)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"QinHaichen12"},"content":"**Jan 2023 - Aug 2023**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"QinHaichen12"},"content":"- Tutored multiple students for physics and mathematics at Junior College level","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"QinHaichen12"},"content":"### Head Depot Clerk (Singapore Armed Forces)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"QinHaichen12"},"content":"**Jan 2021 - Jan 2023**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"QinHaichen12"},"content":"- Managed administrative processes for a depot with more than 70 people","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"QinHaichen12"},"content":"- Engineered an automated duty planning system using VBA and Power Query that streamlined scheduling for 70+ personnel, resulting in time savings of over 15 hours per week on administrative tasks.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"QinHaichen12"},"content":"### Research Intern (Cryowerx)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"QinHaichen12"},"content":"**Apr 2019 - Oct 2019**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"QinHaichen12"},"content":"- Developed innovative solutions to mitigate RFID signal detuning caused by medium placement or material obstructions.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"QinHaichen12"},"content":"- Presented the project at Singapore Science Engineering Fair 2020, earning a Merit Award for its effectiveness in addressing complex engineering challenges related to RFID technology.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"QinHaichen12"},"content":"## Community Involvement","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"QinHaichen12"},"content":"### Trained Repair Coach (Repair Kopitiam Singapore)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"QinHaichen12"},"content":"**Apr 2023 - Present**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"QinHaichen12"},"content":"- Trained to repair common electrical and mechanical devices","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"QinHaichen12":58,"keithxun":12}},{"path":"docs/team/taggyhan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"taggyhan"},"content":"* * * * *","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"taggyhan"},"content":"**Tan Tag Han**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"taggyhan"},"content":"- **Email**: e0516145@u.nus.edu","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"taggyhan"},"content":"- **Phone**: 82013355","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"taggyhan"},"content":"- **LinkedIn**: [Tag Han Tan](https://www.linkedin.com/in/tag-han-tan/)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"taggyhan"},"content":"### Education","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"taggyhan"},"content":"- **National University of Singapore (2023 - Present)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"taggyhan"},"content":" - Bachelor of Computing, Computer Science","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"taggyhan"},"content":" - Awarded Full Ride Scholarship; Stephen Riady Scholarship","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":"- **NUS High School of Mathematics and Science (2015 -- 2020)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"taggyhan"},"content":" - High Distinction (Majors with Honors in Chemistry; Majors in Math, Physics, Biology)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"taggyhan"},"content":" - Societies: Track \u0026 Field Team; Drama Club; Boarding School Leader; Chemistry Olympiad Team","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":"### Work Experience","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"taggyhan"},"content":"- **Raven Parthenon Education (Nov 2022 - Present)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"taggyhan"},"content":" - Co-Founder","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"taggyhan"},"content":" - Connected students with mentors for Olympiads/IB/IGCSE/MCAT/GAMSAT/SAT/ACT.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"taggyhan"},"content":" - Engaged 500+ students with tutors, collaborating with various education partners.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"taggyhan"},"content":" - Bootstrapped Raven to annual six-figure revenue and profit within two years of launching.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"taggyhan"},"content":"- **Institute of High-Performance Computing (Nov 2022 - Jun 2023)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":" - Machine Learning Research Intern","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":" - Developed loss functions in Generative Adversarial Networks for image-to-image translation networks.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"taggyhan"},"content":" - Improved image quality metrics by 15%.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"taggyhan"},"content":"- **Bioinformatics Institute (Jun 2019 - Mar 2020)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"taggyhan"},"content":" - Bioinformatics Research Intern","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"taggyhan"},"content":" - Performed molecular dynamics tasks for protein-protein binding interactions in AMBER 14.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"taggyhan"},"content":" - Bronze Medal at Singapore Science and Engineering Fair and A*STAR Talent Search (Top 50 in Singapore).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"taggyhan"},"content":"### Clubs \u0026 Societies","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":"- **NUS Fintech Society (Aug 2023 - Present)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"taggyhan"},"content":" - Machine Learning Tech Lead","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"taggyhan"},"content":" - Led a team of 5 software engineers in developing a React Native application for real estate trend analysis.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"taggyhan"},"content":"- **Google Developers Student Club (GDSC) NUS (Aug 2023 - Present)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"taggyhan"},"content":" - Technology Associate","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"taggyhan"},"content":" - Maintenance of GDSC website, conducted seminars/workshops on ML/APIs.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"taggyhan"},"content":"### Honours/Certifications","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"taggyhan"},"content":"- Google Cloud Professional Machine Learning Engineer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"taggyhan"},"content":"- Google Professional Data Analytics Specialization","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"taggyhan"},"content":"- Singapore Chemistry Olympiad Silver (Top 40 in Singapore)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"taggyhan"},"content":"- Singapore Mathematical Olympiad Silver","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"taggyhan":56}},{"path":"docs/team/yuvrajaryan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yuvrajaryan"},"content":" title: \"Yuvraj Aryan Singh\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"yuvrajaryan":1,"-":45}},{"path":"src/main/java/hallpointer/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.Config;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.Version;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ConfigUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.StringUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.LogicManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import hallpointer.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.AddressBookStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.Storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.StorageManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.UserPrefsStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import hallpointer.address.ui.Ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import hallpointer.address.ui.UiManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" public static final Version VERSION \u003d new Version(1, 0, 0, true);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing AddressBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping AddressBook ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":185}},{"path":"src/main/java/hallpointer/address/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.commons.util;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.StringWriter;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Helper functions for handling strings.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StringUtil {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Ignores case, but a full word match is required.","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static boolean containsWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" String preppedWord \u003d word.trim();","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" .anyMatch(preppedWord::equalsIgnoreCase);","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * e.g. empty string, \"-1\", \"0\", \"+1\", and \" 2 \" (untrimmed), \"3 0\" (contains whitespace), \"1 a\" (contains letters)","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if {@code s} represents a non-negative unsigned integer","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" * e.g. 0, 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" * e.g. empty string, \"-1\", \"+1\", and \" 2 \" (untrimmed), \"3 0\" (contains whitespace), \"1 a\" (contains letters)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" public static boolean isNonNegativeUnsignedInteger(String s) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(s);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" try {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" return value \u003e\u003d 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" return false;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":18,"-":68}},{"path":"src/main/java/hallpointer/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.CommandResult;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see hallpointer.address.model.Model#getAddressBook()","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" /** Returns an unmodifiable view of the filtered list of members */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" ObservableList\u003cMember\u003e getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":47}},{"path":"src/main/java/hallpointer/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.Command;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.CommandResult;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.AddressBookParser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.Storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getFilteredMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" return model.getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":85}},{"path":"src/main/java/hallpointer/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.Prefix;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX \u003d \"The member index provided is invalid\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_MEMBERS_LISTED_OVERVIEW \u003d \"%1$d members listed!\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" * Formats the {@code member} for display to the user.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" public static String format(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" builder.append(member.getName())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" .append(\"; Telegram: \")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" .append(member.getTelegram())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" .append(\"; Room: \")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" .append(member.getRoom())","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" member.getTags().forEach(builder::append);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":11,"-":38}},{"path":"src/main/java/hallpointer/address/logic/commands/AddMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * Adds a member to the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"add\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a member to the address book. \"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" + PREFIX_TELEGRAM + \"TELEGRAM \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" + PREFIX_ROOM + \"ADDRESS \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" + PREFIX_TELEGRAM + \"98765432 \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" + PREFIX_ROOM + \"311, Clementi Ave 2, #02-25 \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"friends \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" + PREFIX_TAG + \"owesMoney\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_SUCCESS \u003d \"New member added: %1$s\";","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_DUPLICATE_MEMBER \u003d \"This member already exists in the address book\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" private final Member toAdd;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" * Creates an AddMemberCommand to add the specified {@code Member}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" public AddMemberCommand(Member member) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" toAdd \u003d member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" if (model.hasMember(toAdd)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" throw new CommandException(MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" model.addMember(toAdd);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return new CommandResult(String.format(MESSAGE_SUCCESS, Messages.format(toAdd)));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof AddMemberCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand otherAddMemberCommand \u003d (AddMemberCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" return toAdd.equals(otherAddMemberCommand.toAdd);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":23,"-":58}},{"path":"src/main/java/hallpointer/address/logic/commands/DeleteMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" * Deletes a member identified using its displayed index from the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"public class DeleteMemberCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"delete\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" + \": Deletes the member identified by the index number used in the displayed member list.\\n\"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_DELETE_MEMBER_SUCCESS \u003d \"Deleted Member: %1$s\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public DeleteMemberCommand(Index targetIndex) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e lastShownList \u003d model.getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" Member memberToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" model.deleteMember(memberToDelete);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" return new CommandResult(String.format(MESSAGE_DELETE_MEMBER_SUCCESS, Messages.format(memberToDelete)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof DeleteMemberCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand otherDeleteMemberCommand \u003d (DeleteMemberCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" return targetIndex.equals(otherDeleteMemberCommand.targetIndex);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":14,"-":55}},{"path":"src/main/java/hallpointer/address/logic/commands/EditMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.model.Model.PREDICATE_SHOW_ALL_MEMBERS;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" * Edits the details of an existing member in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":"public class EditMemberCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"edit\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Edits the details of the member identified \"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" + \"by the index number used in the displayed member list. \"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" + \"[\" + PREFIX_TELEGRAM + \"TELEGRAM] \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" + \"[\" + PREFIX_ROOM + \"ADDRESS] \"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" + PREFIX_TELEGRAM + \"91234567 \";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_EDIT_MEMBER_SUCCESS \u003d \"Edited Member: %1$s\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public static final String MESSAGE_NOT_EDITED \u003d \"At least one field to edit must be provided.\";","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_DUPLICATE_MEMBER \u003d \"This member already exists in the address book.\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" private final EditMemberDescriptor editMemberDescriptor;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" * @param index of the member in the filtered member list to edit","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" * @param editMemberDescriptor details to edit the member with","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberCommand(Index index, EditMemberDescriptor editMemberDescriptor) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(editMemberDescriptor);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" this.editMemberDescriptor \u003d new EditMemberDescriptor(editMemberDescriptor);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e lastShownList \u003d model.getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" throw new CommandException(Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" Member memberToEdit \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" Member editedMember \u003d createEditedMember(memberToEdit, editMemberDescriptor);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" if (!memberToEdit.isSameMember(editedMember) \u0026\u0026 model.hasMember(editedMember)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" throw new CommandException(MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" model.setMember(memberToEdit, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(PREDICATE_SHOW_ALL_MEMBERS);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" return new CommandResult(String.format(MESSAGE_EDIT_MEMBER_SUCCESS, Messages.format(editedMember)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" * Creates and returns a {@code Member} with the details of {@code memberToEdit}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" * edited with {@code editMemberDescriptor}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" private static Member createEditedMember(Member memberToEdit, EditMemberDescriptor editMemberDescriptor) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" assert memberToEdit !\u003d null;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" Name updatedName \u003d editMemberDescriptor.getName().orElse(memberToEdit.getName());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":" Telegram updatedTelegram \u003d editMemberDescriptor.getTelegram()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" .orElse(memberToEdit.getTelegram());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" Room updatedRoom \u003d editMemberDescriptor.getRoom().orElse(memberToEdit.getRoom());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" Set\u003cTag\u003e updatedTags \u003d editMemberDescriptor.getTags().orElse(memberToEdit.getTags());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"starchypotatocode"},"content":" return new Member(updatedName, updatedTelegram, updatedRoom, updatedTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof EditMemberCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand otherEditMemberCommand \u003d (EditMemberCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"starchypotatocode"},"content":" return index.equals(otherEditMemberCommand.index)","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 editMemberDescriptor.equals(otherEditMemberCommand.editMemberDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"starchypotatocode"},"content":" .add(\"editMemberDescriptor\", editMemberDescriptor)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" * Stores the details to edit the member with. Each non-empty field value will replace the","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"starchypotatocode"},"content":" * corresponding field value of the member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":" public static class EditMemberDescriptor {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"starchypotatocode"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"starchypotatocode"},"content":" private Room room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptor() {}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptor(EditMemberDescriptor toCopy) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" setTelegram(toCopy.telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":" setRoom(toCopy.room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" * Returns true if at least one field is edited.","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" public boolean isAnyFieldEdited() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"starchypotatocode"},"content":" return CollectionUtil.isAnyNonNull(name, telegram, room, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"starchypotatocode"},"content":" public void setTelegram(Telegram telegram) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"starchypotatocode"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"starchypotatocode"},"content":" public Optional\u003cTelegram\u003e getTelegram() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"starchypotatocode"},"content":" return Optional.ofNullable(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"starchypotatocode"},"content":" public void setRoom(Room room) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"starchypotatocode"},"content":" this.room \u003d room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"starchypotatocode"},"content":" public Optional\u003cRoom\u003e getRoom() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"starchypotatocode"},"content":" return Optional.ofNullable(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof EditMemberDescriptor)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor otherEditMemberDescriptor \u003d (EditMemberDescriptor) other;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"starchypotatocode"},"content":" return Objects.equals(name, otherEditMemberDescriptor.name)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 Objects.equals(telegram, otherEditMemberDescriptor.telegram)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 Objects.equals(room, otherEditMemberDescriptor.room)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 Objects.equals(tags, otherEditMemberDescriptor.tags);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"starchypotatocode"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"starchypotatocode"},"content":" .add(\"room\", room)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":72,"-":154}},{"path":"src/main/java/hallpointer/address/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Room Book as requested...\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":18}},{"path":"src/main/java/hallpointer/address/logic/commands/FindMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" * Finds and lists all members in address book whose name contains any of the argument keywords.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"public class FindMemberCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"find\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all members whose names contain any of \"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" alice bob charlie\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" public FindMemberCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" String.format(Messages.MESSAGE_MEMBERS_LISTED_OVERVIEW, model.getFilteredMemberList().size()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof FindMemberCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand otherFindMemberCommand \u003d (FindMemberCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" return predicate.equals(otherFindMemberCommand.predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":11,"-":47}},{"path":"src/main/java/hallpointer/address/logic/commands/ListMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.model.Model.PREDICATE_SHOW_ALL_MEMBERS;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" * Lists all members in the address book to the user.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"public class ListMemberCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"list\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all members\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(PREDICATE_SHOW_ALL_MEMBERS);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":5,"-":19}},{"path":"src/main/java/hallpointer/address/logic/parser/AddMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" * Parses input arguments and creates a new AddMemberCommand object","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommandParser implements Parser\u003cAddMemberCommand\u003e {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" * Parses the given {@code String} of arguments in the context of the AddMemberCommand","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" * and returns an AddMemberCommand object for execution.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public AddMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM, PREFIX_TAG);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" Telegram telegram \u003d ParserUtil.parseTelegram(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" argMultimap.getValue(PREFIX_TELEGRAM).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" Room room \u003d ParserUtil.parseRoom(argMultimap.getValue(PREFIX_ROOM).get());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d new Member(name, telegram, room, tagList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" return new AddMemberCommand(member);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":22,"-":37}},{"path":"src/main/java/hallpointer/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.Command;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.FindMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.ListMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" case AddMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" return new AddMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" case EditMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" return new EditMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" case DeleteMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" return new DeleteMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" case FindMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" return new FindMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" case ListMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" return new ListMemberCommand();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":16,"-":70}},{"path":"src/main/java/hallpointer/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" // Stream.of(prefixes).distinct() sorts prefixes by lexicographical order","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":78}},{"path":"src/main/java/hallpointer/address/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Tokenizes arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}\u003cbr\u003e","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" * e.g. {@code some preamble text t/ 11.00 t/12.00 k/ m/ July} where prefixes are {@code t/ k/ m/}.\u003cbr\u003e","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * 1. An argument\u0027s value can be an empty string e.g. the value of {@code k/} in the above example.\u003cbr\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * 2. Leading and trailing whitespaces of an argument value will be discarded.\u003cbr\u003e","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" * 3. Consecutive whitespace will be replaced with a single space.\u003cbr\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * 4. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * in the above example.\u003cbr\u003e","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class ArgumentTokenizer {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap} object that maps prefixes to their","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * respective argument values. Only the given prefixes will be recognized in the arguments string.","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" * Consecutive whitespace will also be replaced with a single space.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static ArgumentMultimap tokenize(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" List\u003cPrefixPosition\u003e positions \u003d findAllPrefixPositions(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" argsString.replaceAll(\"\\\\s+\", \" \"), prefixes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" return extractArguments(argsString.replaceAll(\"\\\\s+\", \" \"), positions);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Finds all zero-based prefix positions in the given arguments string.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to find in the arguments string","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return List of zero-based prefix positions in the given arguments string","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findAllPrefixPositions(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return Arrays.stream(prefixes)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .flatMap(prefix -\u003e findPrefixPositions(argsString, prefix).stream())","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * {@see findAllPrefixPositions}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findPrefixPositions(String argsString, Prefix prefix) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" int prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), 0);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" while (prefixPosition !\u003d -1) {","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" PrefixPosition extendedPrefix \u003d new PrefixPosition(prefix, prefixPosition);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" positions.add(extendedPrefix);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns the index of the first occurrence of {@code prefix} in","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * is valid if there is a whitespace before {@code prefix}. Returns -1 if no","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * E.g if {@code argsString} \u003d \"e/hip/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" private static int findPrefixPosition(String argsString, String prefix, int fromIndex) {","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" int prefixIndex \u003d argsString.indexOf(\" \" + prefix, fromIndex);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return prefixIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" : prefixIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @param prefixPositions Zero-based positions of all prefixes in {@code argsString}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cPrefixPosition\u003e prefixPositions) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" prefixPositions.sort((prefix1, prefix2) -\u003e prefix1.getStartPosition() - prefix2.getStartPosition());","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // Insert a PrefixPosition to represent the preamble","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" PrefixPosition preambleMarker \u003d new PrefixPosition(new Prefix(\"\"), 0);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" prefixPositions.add(0, preambleMarker);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // Add a dummy PrefixPosition to represent the end of the string","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" PrefixPosition endPositionMarker \u003d new PrefixPosition(new Prefix(\"\"), argsString.length());","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" prefixPositions.add(endPositionMarker);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Map prefixes to their argument values (if any)","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c prefixPositions.size() - 1; i++) {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // Extract and store prefixes and their arguments","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Prefix argPrefix \u003d prefixPositions.get(i).getPrefix();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String argValue \u003d extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1));","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" argMultimap.put(argPrefix, argValue);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * The end position of the value is determined by {@code nextPrefixPosition}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" PrefixPosition currentPrefixPosition,","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" PrefixPosition nextPrefixPosition) {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" Prefix prefix \u003d currentPrefixPosition.getPrefix();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" int valueStartPos \u003d currentPrefixPosition.getStartPosition() + prefix.getPrefix().length();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" String value \u003d argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition());","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" return value.trim();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Represents a prefix\u0027s position in an arguments string.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" private static class PrefixPosition {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" private int startPosition;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" private final Prefix prefix;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" PrefixPosition(Prefix prefix, int startPosition) {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" Prefix getPrefix() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":6,"-":145}},{"path":"src/main/java/hallpointer/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":" public static final Prefix PREFIX_TELEGRAM \u003d new Prefix(\"tg/\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" public static final Prefix PREFIX_ROOM \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"t/\");","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":2,"-":12}},{"path":"src/main/java/hallpointer/address/logic/parser/DeleteMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":" * Parses input arguments and creates a new DeleteMemberCommand object","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"public class DeleteMemberCommandParser implements Parser\u003cDeleteMemberCommand\u003e {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteMemberCommand","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * and returns a DeleteMemberCommand object for execution.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" public DeleteMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" return new DeleteMemberCommand(index);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteMemberCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":9,"-":20}},{"path":"src/main/java/hallpointer/address/logic/parser/EditMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand.EditMemberDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" * Parses input arguments and creates a new EditMemberCommand object","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"public class EditMemberCommandParser implements Parser\u003cEditMemberCommand\u003e {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" * Parses the given {@code String} of arguments in the context of the EditMemberCommand","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" * and returns an EditMemberCommand object for execution.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM, PREFIX_TAG);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor editMemberDescriptor \u003d new EditMemberDescriptor();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" editMemberDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" editMemberDescriptor.setTelegram(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" if (argMultimap.getValue(PREFIX_ROOM).isPresent()) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" editMemberDescriptor.setRoom(ParserUtil.parseRoom(argMultimap.getValue(PREFIX_ROOM).get()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editMemberDescriptor::setTags);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" if (!editMemberDescriptor.isAnyFieldEdited()) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" throw new ParseException(EditMemberCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" return new EditMemberCommand(index, editMemberDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":25,"-":58}},{"path":"src/main/java/hallpointer/address/logic/parser/FindMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.FindMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" * Parses input arguments and creates a new FindMemberCommand object","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"public class FindMemberCommandParser implements Parser\u003cFindMemberCommand\u003e {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" * Parses the given {@code String} of arguments in the context of the FindMemberCommand","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" * and returns a FindMemberCommand object for execution.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" public FindMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" return new FindMemberCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":10,"-":23}},{"path":"src/main/java/hallpointer/address/logic/parser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.Command;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Parser that is able to parse user input into a {@code Command} of type {@code T}.","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface Parser\u003cT extends Command\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if {@code userInput} does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" T parse(String userInput) throws ParseException;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":15}},{"path":"src/main/java/hallpointer/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.StringUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" * Parses a {@code String telegram} into a {@code Telegram}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the given {@code telegram} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public static Telegram parseTelegram(String telegram) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" String trimmedTelegram \u003d telegram.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" if (!Telegram.isValidTelegram(trimmedTelegram)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" throw new ParseException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" return new Telegram(trimmedTelegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" * Parses a {@code String room} into an {@code Room}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the given {@code room} is invalid.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" public static Room parseRoom(String room) throws ParseException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" String trimmedRoom \u003d room.trim();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" if (!Room.isValidRoom(trimmedRoom)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" throw new ParseException(Room.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" return new Room(trimmedRoom);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":19,"-":89}},{"path":"src/main/java/hallpointer/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.UniqueMemberList;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * Duplicates are not allowed (by .isSameMember comparison)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" private final UniqueMemberList members;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" members \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" * Creates an AddressBook using the Members in the {@code toBeCopied}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the contents of the member list with {@code members}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" * {@code members} must not contain duplicate members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers(List\u003cMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" this.members.setMembers(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" setMembers(newData.getMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" //// member-level operations","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if a member with the same identity as {@code member} exists in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMembers(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" return members.contains(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" * Adds a member to the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" * The member must not already exist in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" public void addMember(Member p) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" members.add(p);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the given member {@code target} in the list with {@code editedMember}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" * The member identity of {@code editedMember} must not be the same as another existing member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" public void setMember(Member target, Member editedMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" members.setMember(target, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" public void removeMember(Member key) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" members.remove(key);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" .add(\"members\", members)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" return members.asUnmodifiableObservableList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"starchypotatocode"},"content":" return members.equals(otherAddressBook.members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" return members.hashCode();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":32,"-":98}},{"path":"src/main/java/hallpointer/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" Predicate\u003cMember\u003e PREDICATE_SHOW_ALL_MEMBERS \u003d unused -\u003e true;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if a member with the same identity as {@code member} exists in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" boolean hasMember(Member member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" * Deletes the given member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" * The member must exist in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" void deleteMember(Member target);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" * Adds the given member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" * {@code member} must not already exist in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" void addMember(Member member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the given member {@code target} with {@code editedMember}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" * The member identity of {@code editedMember} must not be the same as another existing member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" void setMember(Member target, Member editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" /** Returns an unmodifiable view of the filtered member list */","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" ObservableList\u003cMember\u003e getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" * Updates the filter of the filtered member list to filter by the given {@code predicate}.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" void updateFilteredMemberList(Predicate\u003cMember\u003e predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":17,"-":70}},{"path":"src/main/java/hallpointer/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private final FilteredList\u003cMember\u003e filteredMembers;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" filteredMembers \u003d new FilteredList\u003c\u003e(this.addressBook.getMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" return addressBook.hasMembers(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" public void deleteMember(Member target) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" addressBook.removeMember(target);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" public void addMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" updateFilteredMemberList(PREDICATE_SHOW_ALL_MEMBERS);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" public void setMember(Member target, Member editedMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" requireAllNonNull(target, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"starchypotatocode"},"content":" addressBook.setMember(target, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Member List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" * Returns an unmodifiable view of the list of {@code Member} backed by the internal list of","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getFilteredMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":" return filteredMembers;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"starchypotatocode"},"content":" public void updateFilteredMemberList(Predicate\u003cMember\u003e predicate) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" filteredMembers.setPredicate(predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 filteredMembers.equals(otherModelManager.filteredMembers);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":21,"-":127}},{"path":"src/main/java/hallpointer/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":" * Unmodifiable view of an address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" * Returns an unmodifiable view of the members list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" * This list will not contain any duplicate members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" ObservableList\u003cMember\u003e getMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":5,"-":12}},{"path":"src/main/java/hallpointer/address/model/member/Member.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * Represents a Member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"public class Member {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private final Telegram telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private final Room room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public Member(Name name, Telegram telegram, Room room, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" requireAllNonNull(name, telegram, room, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" this.room \u003d room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" public Telegram getTelegram() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" return telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" public Room getRoom() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" return room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if both members have the same name.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" * This defines a weaker notion of equality between two members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" public boolean isSameMember(Member otherMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" if (otherMember \u003d\u003d this) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" return otherMember !\u003d null","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 otherMember.getName().equals(getName());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if both members have the same identity and data fields.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" * This defines a stronger notion of equality between two members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof Member)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" Member otherMember \u003d (Member) other;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" return name.equals(otherMember.name)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 telegram.equals(otherMember.telegram)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 room.equals(otherMember.room)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 tags.equals(otherMember.tags);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" return Objects.hash(name, telegram, room, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" .add(\"room\", room)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":30,"-":79}},{"path":"src/main/java/hallpointer/address/model/member/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":" * Represents a Member\u0027s name in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * The first character of the name must not be a whitespace,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":64}},{"path":"src/main/java/hallpointer/address/model/member/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.StringUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":" * Tests that a {@code Member}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cMember\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" public boolean test(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(member.getName().fullName, keyword));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":5,"-":39}},{"path":"src/main/java/hallpointer/address/model/member/Room.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":" * Represents a Member\u0027s room in the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidRoom(String)}","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"public class Room {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Room should be in the format \u003cblock\u003e/\u003cfloor\u003e/\u003croom_number\u003e\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALIDATION_REGEX \u003d \"^[0-9]+/[0-9]+/[0-9]+$\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" * Constructs an {@code Room}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" * @param room A valid room.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" public Room(String room) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" checkArgument(isValidRoom(room), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" value \u003d room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if a given string is a valid room.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" public static boolean isValidRoom(String test) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof Room)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" Room otherRoom \u003d (Room) other;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" return value.equals(otherRoom.value);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":17,"-":48}},{"path":"src/main/java/hallpointer/address/model/member/Telegram.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":" * Represents a Member\u0027s telegram in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegram(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"public class Telegram {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" \"Telegram must only contain alphanumeric characters or underscores\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" + \"and be between 5 to 32 characters long\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" + \", starting with a letter and not ending with a underscore\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" + \"@ is not required as it is implicitly assumed to be there\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALIDATION_REGEX \u003d \"^[a-zA-Z](?:[a-zA-Z0-9]|_(?\u003d.*[a-zA-Z0-9]$)){4,31}$\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" * Constructs a {@code Telegram}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * @param telegram A valid telegram.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" public Telegram(String telegram) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" checkArgument(isValidTelegram(telegram), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" value \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if a given string is a valid telegram.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" public static boolean isValidTelegram(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof Telegram)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" Telegram otherTelegram \u003d (Telegram) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" return value.equals(otherTelegram.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":64}},{"path":"src/main/java/hallpointer/address/model/member/UniqueMemberList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import java.util.List;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.DuplicateMemberException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.MemberNotFoundException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" * A list of members that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * A member is considered unique by comparing using {@code Member#isSameMember(Member)}. As such, adding and updating of","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" * members uses Member#isSameMember(Member) for equality so as to ensure that the member being added or updated is","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" * unique in terms of identity in the UniqueMemberList. However, the removal of a member uses Member#equals(Object) so","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" * as to ensure that the member with exactly the same fields will be removed.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" *","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" *","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" * @see Member#isSameMember(Member)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":"public class UniqueMemberList implements Iterable\u003cMember\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" private final ObservableList\u003cMember\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" private final ObservableList\u003cMember\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if the list contains an equivalent member as the given argument.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" public boolean contains(Member toCheck) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" return internalList.stream().anyMatch(toCheck::isSameMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" * Adds a member to the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" * The member must not already exist in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" public void add(Member toAdd) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" throw new DuplicateMemberException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the member {@code target} in the list with {@code editedMember}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" * The member identity of {@code editedMember} must not be the same as another existing member in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" public void setMember(Member target, Member editedMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" requireAllNonNull(target, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" throw new MemberNotFoundException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" if (!target.isSameMember(editedMember) \u0026\u0026 contains(editedMember)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" throw new DuplicateMemberException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" internalList.set(index, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" * Removes the equivalent member from the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" * The member must exist in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" public void remove(Member toRemove) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" throw new MemberNotFoundException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers(UniqueMemberList replacement) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the contents of this list with {@code members}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" * {@code members} must not contain duplicate members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers(List\u003cMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" requireAllNonNull(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" if (!membersAreUnique(members)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" throw new DuplicateMemberException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" internalList.setAll(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"starchypotatocode"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" public Iterator\u003cMember\u003e iterator() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" return internalList.iterator();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"starchypotatocode"},"content":" return true;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof UniqueMemberList)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" return false;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList otherUniqueMemberList \u003d (UniqueMemberList) other;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"starchypotatocode"},"content":" return internalList.equals(otherUniqueMemberList.internalList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"starchypotatocode"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"starchypotatocode"},"content":" public String toString() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"starchypotatocode"},"content":" return internalList.toString();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if {@code members} contains only unique members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"starchypotatocode"},"content":" private boolean membersAreUnique(List\u003cMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"starchypotatocode"},"content":" for (int i \u003d 0; i \u003c members.size() - 1; i++) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"starchypotatocode"},"content":" for (int j \u003d i + 1; j \u003c members.size(); j++) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" if (members.get(i).isSameMember(members.get(j))) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"starchypotatocode"},"content":" return false;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"starchypotatocode"},"content":" return true;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":150}},{"path":"src/main/java/hallpointer/address/model/member/exceptions/DuplicateMemberException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member.exceptions;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":" * Signals that the operation will result in duplicate Members (Members are considered duplicates if they have the same","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":" * identity).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"public class DuplicateMemberException extends RuntimeException {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":" public DuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" super(\"Operation would result in duplicate members\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":11}},{"path":"src/main/java/hallpointer/address/model/member/exceptions/MemberNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member.exceptions;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":" * Signals that the operation is unable to find the specified member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"public class MemberNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":6}},{"path":"src/main/java/hallpointer/address/model/session/Date.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"keithxun"},"content":"package hallpointer.address.model.session;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"keithxun"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"keithxun"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"keithxun"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"keithxun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"keithxun"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"keithxun"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":" * Represents a date in the system.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDate(String)}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"keithxun"},"content":"public class Date {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"keithxun"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"keithxun"},"content":" \"Dates should be in the format dd MMM yyyy (e.g. 24 Sep 2024)\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"keithxun"},"content":" // Desired date format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"keithxun"},"content":" public static final DateTimeFormatter DATE_FORMATTER \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"keithxun"},"content":" public final LocalDate fullDate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":" * Constructs a {@code Date}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"keithxun"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"keithxun"},"content":" * @param date A valid date string.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"keithxun"},"content":" public Date(String date) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"keithxun"},"content":" requireNonNull(date);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"keithxun"},"content":" checkArgument(isValidDate(date), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":" fullDate \u003d parseDate(date);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"keithxun"},"content":" * Returns true if a given string is a valid date according to the specified format.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"keithxun"},"content":" public static boolean isValidDate(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":" try {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":" DATE_FORMATTER.parse(test);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"keithxun"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"keithxun"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":" * Parses a valid date string into a LocalDate object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":" * @param date A valid date string.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":" * @return A LocalDate object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":" public static LocalDate parseDate(String date) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":" return LocalDate.parse(date, DATE_FORMATTER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"keithxun"},"content":" * Returns the date as a formatted string.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"keithxun"},"content":" return fullDate.format(DATE_FORMATTER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"keithxun"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"keithxun"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"keithxun"},"content":" if (!(other instanceof Date)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"keithxun"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"keithxun"},"content":" Date otherDate \u003d (Date) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"keithxun"},"content":" return fullDate.equals(otherDate.fullDate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"keithxun"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"keithxun"},"content":" return fullDate.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"keithxun"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"keithxun":82}},{"path":"src/main/java/hallpointer/address/model/session/Session.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"keithxun"},"content":"package hallpointer.address.model.session;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"keithxun"},"content":"import static hallpointer.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"keithxun"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"keithxun"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"keithxun"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"keithxun"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"keithxun"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"keithxun"},"content":" * Represents a Session in the system.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"keithxun"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"keithxun"},"content":"public class Session {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"keithxun"},"content":" // Identity fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"keithxun"},"content":" private final SessionName sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"keithxun"},"content":" private final int points;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"keithxun"},"content":" private final Date date;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":" // Data fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":" private final Set\u003cMember\u003e members \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"keithxun"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"keithxun"},"content":" public Session(SessionName sessionName, Date date, int points, Set\u003cMember\u003e members) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"keithxun"},"content":" requireAllNonNull(sessionName, date, points, members);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":" this.sessionName \u003d sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"keithxun"},"content":" this.date \u003d date;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"keithxun"},"content":" this.points \u003d points;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"keithxun"},"content":" this.members.addAll(members);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"keithxun"},"content":" public SessionName getSessionName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":" return sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"keithxun"},"content":" public int getPoints() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"keithxun"},"content":" return points;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":" * Returns an immutable member set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":" * if modification is attempted.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":" public Set\u003cMember\u003e getMembers() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":" return Collections.unmodifiableSet(members);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"keithxun"},"content":" * Updates the set of members in the session.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"keithxun"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"keithxun"},"content":" * @param newMembers New set of members.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"keithxun"},"content":" public Session updateMembers(Set\u003cMember\u003e newMembers) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":" return new Session(this.sessionName, this.date, this.points, newMembers);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"keithxun"},"content":" * Returns true if both sessions have the same name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"keithxun"},"content":" * This defines a weaker notion of equality between two sessions.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"keithxun"},"content":" public boolean isSameSession(Session otherSession) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"keithxun"},"content":" if (otherSession \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"keithxun"},"content":" return otherSession !\u003d null","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"keithxun"},"content":" \u0026\u0026 otherSession.getSessionName().equals(getSessionName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"keithxun"},"content":" * Returns true if both sessions have the same identity and data fields.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"keithxun"},"content":" * This defines a stronger notion of equality between two sessions.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"keithxun"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"keithxun"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"keithxun"},"content":" if (!(other instanceof Session)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"keithxun"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"keithxun"},"content":" Session otherSession \u003d (Session) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"keithxun"},"content":" return sessionName.equals(otherSession.sessionName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"keithxun"},"content":" \u0026\u0026 points \u003d\u003d otherSession.points","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"keithxun"},"content":" \u0026\u0026 members.equals(otherSession.members);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"keithxun"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"keithxun"},"content":" return Objects.hash(sessionName, points, members);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"keithxun"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"keithxun"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"keithxun"},"content":" .add(\"sessionName\", sessionName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"keithxun"},"content":" .add(\"points\", points)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"keithxun"},"content":" .add(\"members\", members)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"keithxun"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"keithxun"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"keithxun":109}},{"path":"src/main/java/hallpointer/address/model/session/SessionName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"keithxun"},"content":"package hallpointer.address.model.session;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"keithxun"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"keithxun"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"keithxun"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"keithxun"},"content":" * Represents a Session\u0027s name in the application.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"keithxun"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSessionName(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"keithxun"},"content":"public class SessionName {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":" \"Session names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"keithxun"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"keithxun"},"content":" * The first character of the session name must not be a whitespace,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"keithxun"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"keithxun"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"keithxun"},"content":" public final String sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":" * Constructs a {@code SessionName}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"keithxun"},"content":" * @param name A valid session name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"keithxun"},"content":" public SessionName(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"keithxun"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"keithxun"},"content":" checkArgument(isValidSessionName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"keithxun"},"content":" sessionName \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"keithxun"},"content":" * Returns true if a given string is a valid session name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"keithxun"},"content":" public static boolean isValidSessionName(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"keithxun"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"keithxun"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"keithxun"},"content":" return sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":" if (!(other instanceof SessionName)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"keithxun"},"content":" SessionName otherSessionName \u003d (SessionName) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":" return sessionName.equals(otherSessionName.sessionName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"keithxun"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"keithxun"},"content":" return sessionName.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"keithxun"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"keithxun":66}},{"path":"src/main/java/hallpointer/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model.util;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" public static Member[] getSampleMembers() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" return new Member[] {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Alex Yeoh\"), new Telegram(\"alex_yeoh98\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"12/04/201\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"subcommLeader\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Bernice Yu\"), new Telegram(\"BobLim23\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"5/03/102\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"competitionLeader\", \"achiever\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Charlotte Oliveiro\"), new Telegram(\"oliveiro\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"3/02/301\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"team1\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"David Li\"), new Telegram(\"davidLiOnly\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"14/06/301\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"team3\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Irfan Ibrahim\"), new Telegram(\"ibrahim_irfan\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"3/05/323\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"team2\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Roy Balakrishnan\"), new Telegram(\"roy_da_bomb\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"8/04/258\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"team2\"))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" for (Member sampleMember : getSampleMembers()) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" sampleAb.addMember(sampleMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":26,"-":33}},{"path":"src/main/java/hallpointer/address/storage/JsonAdaptedMember.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" * Jackson-friendly version of {@link Member}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"class JsonAdaptedMember {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Member\u0027s %s field is missing!\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" private final String telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" private final String room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" * Constructs a {@code JsonAdaptedMember} with the given member details.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" public JsonAdaptedMember(@JsonProperty(\"name\") String name, @JsonProperty(\"telegram\") String telegram,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" @JsonProperty(\"room\") String room,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" this.room \u003d room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" * Converts a given {@code Member} into this class for Jackson use.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" public JsonAdaptedMember(Member source) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" telegram \u003d source.getTelegram().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" room \u003d source.getRoom().value;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" * Converts this Jackson-friendly adapted member object into the model\u0027s {@code Member} object.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" public Member toModelType() throws IllegalValueException {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" final List\u003cTag\u003e memberTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" memberTags.add(tag.toModelType());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" if (telegram \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" Telegram.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" if (!Telegram.isValidTelegram(telegram)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" final Telegram modelTelegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" if (room \u003d\u003d null) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Room.class.getSimpleName()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" if (!Room.isValidRoom(room)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(Room.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" final Room modelRoom \u003d new Room(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(memberTags);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":" return new Member(modelName, modelTelegram, modelRoom, modelTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":36,"-":62}},{"path":"src/main/java/hallpointer/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_DUPLICATE_MEMBER \u003d \"Members list contains duplicate member(s).\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private final List\u003cJsonAdaptedMember\u003e members \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"members\") List\u003cJsonAdaptedMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" this.members.addAll(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" members.addAll(source.getMemberList().stream().map(JsonAdaptedMember::new).collect(Collectors.toList()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" for (JsonAdaptedMember jsonAdaptedMember : members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d jsonAdaptedMember.toModelType();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" if (addressBook.hasMembers(member)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":12,"-":48}},{"path":"src/main/java/hallpointer/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2425s1-cs2103t-w14-3.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":101}},{"path":"src/main/java/hallpointer/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.CommandResult;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" private MemberListPanel memberListPanel;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" private StackPane memberListPanelPlaceholder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" memberListPanel \u003d new MemberListPanel(logic.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" memberListPanelPlaceholder.getChildren().add(memberListPanel.getRoot());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"starchypotatocode"},"content":" public MemberListPanel getMemberListPanel() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" return memberListPanel;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" * @see hallpointer.address.logic.Logic#execute(String)","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":6,"-":190}},{"path":"src/main/java/hallpointer/address/ui/MemberCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" * An UI component that displays information of a {@code Member}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"public class MemberCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" private static final String FXML \u003d \"MemberListCard.fxml\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" public final Member member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" private Label telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" private Label room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" * Creates a {@code MemberCode} with the given {@code Member} and index to display.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" public MemberCard(Member member, int displayedIndex) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" this.member \u003d member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" name.setText(member.getName().fullName);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" telegram.setText(member.getTelegram().value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" room.setText(member.getRoom().value);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" member.getTags().stream()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":14,"-":42}},{"path":"src/main/java/hallpointer/address/ui/MemberListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * Panel containing the list of members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"public class MemberListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" private static final String FXML \u003d \"MemberListPanel.fxml\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" private final Logger logger \u003d LogsCenter.getLogger(MemberListPanel.class);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" @FXML","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private ListView\u003cMember\u003e memberListView;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * Creates a {@code MemberListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" public MemberListPanel(ObservableList\u003cMember\u003e memberList) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" super(FXML);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" memberListView.setItems(memberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" memberListView.setCellFactory(listView -\u003e new MemberListViewCell());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Member} using a {@code MemberCard}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" class MemberListViewCell extends ListCell\u003cMember\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" protected void updateItem(Member member, boolean empty) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" super.updateItem(member, empty);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" if (empty || member \u003d\u003d null) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" setGraphic(null);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" setText(null);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" } else {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" setGraphic(new MemberCard(member, getIndex() + 1).getRoot());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":49}},{"path":"src/main/java/hallpointer/address/ui/StatusBarFooter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" * An ui for the status bar that is displayed at the footer of the application.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StatusBarFooter extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"StatusBarFooter.fxml\";","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Label saveLocationStatus;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Creates a {@code StatusBarFooter} with the given {@code Path}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public StatusBarFooter(Path saveLocation) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" saveLocationStatus.setText(Paths.get(\".\").resolve(saveLocation).toString());","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":27}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"starchypotatocode"},"content":"#filterField, #memberListPanel, #memberWebpage {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":351}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" \u003cVBox fx:id\u003d\"memberList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" \u003cStackPane fx:id\u003d\"memberListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":2,"-":57}},{"path":"src/main/resources/view/MemberListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" \u003cLabel fx:id\u003d\"telegram\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$telegram\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" \u003cLabel fx:id\u003d\"room\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$room\" /\u003e","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":2,"-":32}},{"path":"src/main/resources/view/MemberListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":" \u003cListView fx:id\u003d\"memberListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":6}},{"path":"src/test/java/hallpointer/address/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.commons.core.index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class IndexTest {","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void createOneBasedIndex() {","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromOneBased(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromOneBased(1).getOneBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromOneBased(5).getOneBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" // convert from one-based index to zero-based index","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromOneBased(1).getZeroBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertEquals(4, Index.fromOneBased(5).getZeroBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void createZeroBasedIndex() {","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromZeroBased(-1));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromZeroBased(0).getZeroBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromZeroBased(5).getZeroBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // convert from zero-based index to one-based index","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromZeroBased(0).getOneBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(6, Index.fromZeroBased(5).getOneBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" final Index fifthMemberIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(fifthMemberIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(fifthMemberIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(fifthMemberIndex.equals(fifthMemberIndex));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(fifthMemberIndex.equals(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(fifthMemberIndex.equals(5.0f));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(fifthMemberIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expected \u003d Index.class.getCanonicalName() + \"{zeroBasedIndex\u003d\" + index.getZeroBased() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(expected, index.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":7,"-":60}},{"path":"src/test/java/hallpointer/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.AMY;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.CommandResult;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.ListMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.StorageManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" String deleteCommand \u003d \"delete 9\";","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" String listCommand \u003d ListMemberCommand.COMMAND_WORD;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(listCommand, ListMemberCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" public void getFilteredMemberList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredMemberList().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" String addCommand \u003d AddMemberCommand.COMMAND_WORD + NAME_DESC_AMY + TELEGRAM_DESC_AMY","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"starchypotatocode"},"content":" + ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"starchypotatocode"},"content":" Member expectedMember \u003d new MemberBuilder(AMY).withTags().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.addMember(expectedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":17,"-":157}},{"path":"src/test/java/hallpointer/address/logic/commands/AddMemberCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" * Contains integration tests (interaction with the Model) for {@code AddMemberCommand}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommandIntegrationTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public void execute_newMember_success() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" Member validMember \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.addMember(validMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(new AddMemberCommand(validMember), model,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" String.format(AddMemberCommand.MESSAGE_SUCCESS, Messages.format(validMember)),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" public void execute_duplicateMember_throwsCommandException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" Member memberInList \u003d model.getAddressBook().getMemberList().get(0);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(new AddMemberCommand(memberInList), model,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand.MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":14,"-":34}},{"path":"src/test/java/hallpointer/address/logic/commands/AddMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddMemberCommand(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" public void execute_memberAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" ModelStubAcceptingMemberAdded modelStub \u003d new ModelStubAcceptingMemberAdded();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" Member validMember \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" CommandResult commandResult \u003d new AddMemberCommand(validMember).execute(modelStub);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(String.format(AddMemberCommand.MESSAGE_SUCCESS, Messages.format(validMember)),","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" commandResult.getFeedbackToUser());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Arrays.asList(validMember), modelStub.membersAdded);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" public void execute_duplicateMember_throwsCommandException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" Member validMember \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addMemberCommand \u003d new AddMemberCommand(validMember);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" ModelStub modelStub \u003d new ModelStubWithMember(validMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand.MESSAGE_DUPLICATE_MEMBER, () -\u003e addMemberCommand.execute(modelStub));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" Member alice \u003d new MemberBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" Member bob \u003d new MemberBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addAliceCommand \u003d new AddMemberCommand(alice);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addBobCommand \u003d new AddMemberCommand(bob);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addAliceCommandCopy \u003d new AddMemberCommand(alice);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addMemberCommand \u003d new AddMemberCommand(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d AddMemberCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expected, addMemberCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"starchypotatocode"},"content":" public void addMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" public void deleteMember(Member target) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"starchypotatocode"},"content":" public void setMember(Member target, Member editedMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getFilteredMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"starchypotatocode"},"content":" public void updateFilteredMemberList(Predicate\u003cMember\u003e predicate) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"starchypotatocode"},"content":" * A Model stub that contains a single member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"starchypotatocode"},"content":" private class ModelStubWithMember extends ModelStub {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" private final Member member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"starchypotatocode"},"content":" ModelStubWithMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"starchypotatocode"},"content":" this.member \u003d member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"starchypotatocode"},"content":" return this.member.isSameMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"starchypotatocode"},"content":" * A Model stub that always accept the member being added.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"starchypotatocode"},"content":" private class ModelStubAcceptingMemberAdded extends ModelStub {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"starchypotatocode"},"content":" final ArrayList\u003cMember\u003e membersAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"starchypotatocode"},"content":" return membersAdded.stream().anyMatch(member::isSameMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"starchypotatocode"},"content":" public void addMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"starchypotatocode"},"content":" membersAdded.add(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":51,"-":154}},{"path":"src/test/java/hallpointer/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":31}},{"path":"src/test/java/hallpointer/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.EditMemberDescriptorBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALID_TELEGRAM_AMY \u003d \"happyAmy\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALID_TELEGRAM_BOB \u003d \"bobTheTrain\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALID_ROOM_AMY \u003d \"10/10/9\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALID_ROOM_BOB \u003d \"3/1/90\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" public static final String TELEGRAM_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public static final String TELEGRAM_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" public static final String ROOM_DESC_AMY \u003d \" \" + PREFIX_ROOM + VALID_ROOM_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" public static final String ROOM_DESC_BOB \u003d \" \" + PREFIX_ROOM + VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" public static final String INVALID_TELEGRAM_DESC \u003d \" \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" + PREFIX_TELEGRAM + \"#\"; // \u0027#\u0027 not allowed in telegrams","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" public static final String INVALID_ROOM_DESC \u003d \" \" + PREFIX_ROOM + \"1/1/1a\"; // \u0027a\u0027 npt allowed in rooms","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" public static final EditMemberCommand.EditMemberDescriptor DESC_AMY;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" public static final EditMemberCommand.EditMemberDescriptor DESC_BOB;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" DESC_AMY \u003d new EditMemberDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_AMY).withRoom(VALID_ROOM_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" DESC_BOB \u003d new EditMemberDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withRoom(VALID_ROOM_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" * - the address book, filtered member list and selected member in {@code actualModel} remain unchanged","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" * Updates {@code model}\u0027s filtered list to show only the member at the given {@code targetIndex} in the","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" public static void showMemberAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d model.getFilteredMemberList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" final String[] splitName \u003d member.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(1, model.getFilteredMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":32,"-":91}},{"path":"src/test/java/hallpointer/address/logic/commands/DeleteMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.showMemberAtIndex;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * {@code DeleteMemberCommand}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"public class DeleteMemberCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" Member memberToDelete \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand.MESSAGE_DELETE_MEMBER_SUCCESS, Messages.format(memberToDelete));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.deleteMember(memberToDelete);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(deleteMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredMemberList().size() + 1);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(deleteMemberCommand, model, Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" Member memberToDelete \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand.MESSAGE_DELETE_MEMBER_SUCCESS, Messages.format(memberToDelete));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.deleteMember(memberToDelete);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" showNoMember(expectedModel);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(deleteMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(deleteMemberCommand, model, Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteFirstCommand \u003d new DeleteMemberCommand(INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteSecondCommand \u003d new DeleteMemberCommand(INDEX_SECOND_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteFirstCommandCopy \u003d new DeleteMemberCommand(INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(targetIndex);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d DeleteMemberCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expected, deleteMemberCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"starchypotatocode"},"content":" private void showNoMember(Model model) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(p -\u003e false);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(model.getFilteredMemberList().isEmpty());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":39,"-":81}},{"path":"src/test/java/hallpointer/address/logic/commands/EditMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.showMemberAtIndex;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand.EditMemberDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.EditMemberDescriptorBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" * Contains integration tests (interaction with the Model) and unit tests for EditMemberCommand.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":"public class EditMemberCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" Member editedMember \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptor \u003d new EditMemberDescriptorBuilder(editedMember).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand editMemberCommand \u003d new EditMemberCommand(INDEX_FIRST_MEMBER, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand.MESSAGE_EDIT_MEMBER_SUCCESS, Messages.format(editedMember));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.setMember(model.getFilteredMemberList().get(0), editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(editMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" Index indexLastMember \u003d Index.fromOneBased(model.getFilteredMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" Member lastMember \u003d model.getFilteredMemberList().get(indexLastMember.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" MemberBuilder memberInList \u003d new MemberBuilder(lastMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" Member editedMember \u003d memberInList.withName(VALID_NAME_BOB).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptor \u003d new EditMemberDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand editMemberCommand \u003d new EditMemberCommand(indexLastMember, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand.MESSAGE_EDIT_MEMBER_SUCCESS, Messages.format(editedMember));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.setMember(lastMember, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(editMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand editMemberCommand \u003d new EditMemberCommand(INDEX_FIRST_MEMBER, new EditMemberDescriptor());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" Member editedMember \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand.MESSAGE_EDIT_MEMBER_SUCCESS, Messages.format(editedMember));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(editMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" Member memberInFilteredList \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" Member editedMember \u003d new MemberBuilder(memberInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand editMemberCommand \u003d new EditMemberCommand(INDEX_FIRST_MEMBER,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":" new EditMemberDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand.MESSAGE_EDIT_MEMBER_SUCCESS, Messages.format(editedMember));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.setMember(model.getFilteredMemberList().get(0), editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(editMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" public void execute_duplicateMemberUnfilteredList_failure() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" Member firstMember \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptor \u003d new EditMemberDescriptorBuilder(firstMember).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand editMemberCommand \u003d new EditMemberCommand(INDEX_SECOND_MEMBER, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(editMemberCommand, model, EditMemberCommand.MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":" public void execute_duplicateMemberFilteredList_failure() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" // edit member in filtered list into a duplicate in address book","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" Member memberInList \u003d model.getAddressBook().getMemberList().get(INDEX_SECOND_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand editMemberCommand \u003d new EditMemberCommand(INDEX_FIRST_MEMBER,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":" new EditMemberDescriptorBuilder(memberInList).build());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(editMemberCommand, model, EditMemberCommand.MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" public void execute_invalidMemberIndexUnfilteredList_failure() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"starchypotatocode"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredMemberList().size() + 1);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptor \u003d new EditMemberDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand editMemberCommand \u003d new EditMemberCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(editMemberCommand, model, Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"starchypotatocode"},"content":" public void execute_invalidMemberIndexFilteredList_failure() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand editMemberCommand \u003d new EditMemberCommand(outOfBoundIndex,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"starchypotatocode"},"content":" new EditMemberDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(editMemberCommand, model, Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"starchypotatocode"},"content":" final EditMemberCommand standardCommand \u003d new EditMemberCommand(INDEX_FIRST_MEMBER, DESC_AMY);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor copyDescriptor \u003d new EditMemberDescriptor(DESC_AMY);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand commandWithSameValues \u003d new EditMemberCommand(INDEX_FIRST_MEMBER, copyDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(standardCommand.equals(new EditMemberCommand(INDEX_SECOND_MEMBER, DESC_AMY)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(standardCommand.equals(new EditMemberCommand(INDEX_FIRST_MEMBER, DESC_BOB)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor editMemberDescriptor \u003d new EditMemberDescriptor();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand editMemberCommand \u003d new EditMemberCommand(index, editMemberDescriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d EditMemberCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", editMemberDescriptor\u003d\"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"starchypotatocode"},"content":" + editMemberDescriptor + \"}\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expected, editMemberCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":77,"-":111}},{"path":"src/test/java/hallpointer/address/logic/commands/EditMemberDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand.EditMemberDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.EditMemberDescriptorBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"public class EditMemberDescriptorTest {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptorWithSameValues \u003d new EditMemberDescriptor(DESC_AMY);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor editedAmy \u003d new EditMemberDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" editedAmy \u003d new EditMemberDescriptorBuilder(DESC_AMY).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" editedAmy \u003d new EditMemberDescriptorBuilder(DESC_AMY).withRoom(VALID_ROOM_BOB).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" editedAmy \u003d new EditMemberDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor editMemberDescriptor \u003d new EditMemberDescriptor();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d EditMemberDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" + editMemberDescriptor.getName().orElse(null) + \", telegram\u003d\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" + editMemberDescriptor.getTelegram().orElse(null) + \", room\u003d\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" + editMemberDescriptor.getRoom().orElse(null) + \", tags\u003d\"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" + editMemberDescriptor.getTags().orElse(null) + \"}\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expected, editMemberDescriptor.toString());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":18,"-":47}},{"path":"src/test/java/hallpointer/address/logic/commands/FindMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_MEMBERS_LISTED_OVERVIEW;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.CARL;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ELLE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.FIONA;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * Contains integration tests (interaction with the Model) for {@code FindMemberCommand}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"public class FindMemberCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand findFirstCommand \u003d new FindMemberCommand(firstPredicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand findSecondCommand \u003d new FindMemberCommand(secondPredicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand findFirstCommandCopy \u003d new FindMemberCommand(firstPredicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public void execute_zeroKeywords_noMemberFound() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MESSAGE_MEMBERS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand command \u003d new FindMemberCommand(predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.updateFilteredMemberList(predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Collections.emptyList(), model.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" public void execute_multipleKeywords_multipleMembersFound() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MESSAGE_MEMBERS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand command \u003d new FindMemberCommand(predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.updateFilteredMemberList(predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" public void execute_multipleKeywordsOutOfOrder_multipleMembersFound() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MESSAGE_MEMBERS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Elle Kurz Kunz\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand command \u003d new FindMemberCommand(predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.updateFilteredMemberList(predicate);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredMemberList());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand findMemberCommand \u003d new FindMemberCommand(predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d FindMemberCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expected, findMemberCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":33,"-":68}},{"path":"src/test/java/hallpointer/address/logic/commands/ListMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.showMemberAtIndex;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListMemberCommand.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"public class ListMemberCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(new ListMemberCommand(), model, ListMemberCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(new ListMemberCommand(), model, ListMemberCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":8,"-":31}},{"path":"src/test/java/hallpointer/address/logic/parser/AddMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_ROOM_DESC;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.AMY;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BOB;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" private AddMemberCommandParser parser \u003d new AddMemberCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" Member expectedMember \u003d new MemberBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" + TAG_DESC_FRIEND, new AddMemberCommand(expectedMember));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" Member expectedMemberMultipleTags \u003d new MemberBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" NAME_DESC_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" new AddMemberCommand(expectedMemberMultipleTags));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" String validExpectedMemberString \u003d NAME_DESC_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedMemberString,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" // multiple telegrams","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, TELEGRAM_DESC_AMY + validExpectedMemberString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" // multiple rooms","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, ROOM_DESC_AMY + validExpectedMemberString,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" // note that this will fail if the Message part does not have the prefixes sorted in lexicographical order","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" validExpectedMemberString + TELEGRAM_DESC_AMY + NAME_DESC_AMY + ROOM_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" + validExpectedMemberString,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedMemberString,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_TELEGRAM_DESC + validExpectedMemberString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":" // invalid room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_ROOM_DESC + validExpectedMemberString,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, validExpectedMemberString + INVALID_NAME_DESC,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, validExpectedMemberString + INVALID_TELEGRAM_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" // invalid room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, validExpectedMemberString + INVALID_ROOM_DESC,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" Member expectedMember \u003d new MemberBuilder(AMY).withTags().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + TELEGRAM_DESC_AMY + ROOM_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" new AddMemberCommand(expectedMember));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, VALID_NAME_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" // missing telegram prefix","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_TELEGRAM_BOB + ROOM_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"starchypotatocode"},"content":" // missing room prefix","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + VALID_ROOM_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_TELEGRAM_BOB + VALID_ROOM_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + TELEGRAM_DESC_BOB + ROOM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_TELEGRAM_DESC + ROOM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"starchypotatocode"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"starchypotatocode"},"content":" // invalid room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + INVALID_ROOM_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"starchypotatocode"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Room.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + TELEGRAM_DESC_BOB + INVALID_ROOM_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" + ROOM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":74,"-":96}},{"path":"src/test/java/hallpointer/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand.EditMemberDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.FindMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.ListMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.EditMemberDescriptorBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberUtil;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand command \u003d (AddMemberCommand) parser.parseCommand(MemberUtil.getAddCommand(member));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(new AddMemberCommand(member), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand command \u003d (DeleteMemberCommand) parser.parseCommand(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand.COMMAND_WORD + \" \" + INDEX_FIRST_MEMBER.getOneBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(new DeleteMemberCommand(INDEX_FIRST_MEMBER), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptor \u003d new EditMemberDescriptorBuilder(member).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand command \u003d (EditMemberCommand) parser.parseCommand(EditMemberCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" + INDEX_FIRST_MEMBER.getOneBased() + \" \" + MemberUtil.getEditMemberDescriptorDetails(descriptor));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(new EditMemberCommand(INDEX_FIRST_MEMBER, descriptor), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand command \u003d (FindMemberCommand) parser.parseCommand(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(new FindMemberCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(parser.parseCommand(ListMemberCommand.COMMAND_WORD) instanceof ListMemberCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(parser.parseCommand(ListMemberCommand.COMMAND_WORD + \" 3\") instanceof ListMemberCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":28,"-":73}},{"path":"src/test/java/hallpointer/address/logic/parser/ArgumentTokenizerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ArgumentTokenizerTest {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final Prefix unknownPrefix \u003d new Prefix(\"--u\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" private final Prefix pSlash \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private final Prefix dashT \u003d new Prefix(\"-t\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final Prefix hatQ \u003d new Prefix(\"^Q\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void tokenize_emptyArgsString_noValues() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" String argsString \u003d \" \";","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private void assertPreamblePresent(ArgumentMultimap argMultimap, String expectedPreamble) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(expectedPreamble, argMultimap.getPreamble());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private void assertPreambleEmpty(ArgumentMultimap argMultimap) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(argMultimap.getPreamble().isEmpty());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Asserts all the arguments in {@code argMultimap} with {@code prefix} match the {@code expectedValues}","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * and only the last value is returned upon calling {@code ArgumentMultimap#getValue(Prefix)}.","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private void assertArgumentPresent(ArgumentMultimap argMultimap, Prefix prefix, String... expectedValues) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // Verify the last value is returned","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[expectedValues.length - 1], argMultimap.getValue(prefix).get());","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Verify the number of values returned is as expected","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(expectedValues.length, argMultimap.getAllValues(prefix).size());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Verify all values returned are as expected and in order","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c expectedValues.length; i++) {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[i], argMultimap.getAllValues(prefix).get(i));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private void assertArgumentAbsent(ArgumentMultimap argMultimap, Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(argMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void tokenize_noPrefixes_allTakenAsPreamble() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" String argsString \u003d \" some random string /t tag with leading and trailing spaces \";","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Same string expected as preamble, but leading/trailing spaces should be trimmed","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString.trim());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void tokenize_oneArgument() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Preamble present","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String argsString \u003d \" Some preamble string p/ Argument value \";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Some preamble string\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // No preamble","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" argsString \u003d \" p/ Argument value \";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void tokenize_multipleArguments() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Only two arguments are present","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // All three arguments are present","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" argsString \u003d \"Different Preamble String ^Q111 -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Different Preamble String\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"111\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /* Also covers: Reusing of the tokenizer multiple times */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // Reuse tokenizer on an empty string to ensure ArgumentMultimap is correctly reset","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // (i.e. no stale values from the previous tokenizing remain)","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" argsString \u003d \"\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" /* Also covers: testing for prefixes not specified as a prefix */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // Prefixes not previously given to the tokenizer should not return any values","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" argsString \u003d unknownPrefix + \"some value\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, unknownPrefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString); // Unknown prefix is taken as part of preamble","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsWithRepeats() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" // Two arguments repeated, some have empty values","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value ^Q ^Q -t another dashT value p/ pSlash value -t\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\", \"another dashT value\", \"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"\", \"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsJoined() {","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleStringp/ pSlash joined-tjoined -t not joined^Qjoined\";","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleStringp/ pSlash joined-tjoined\");","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"not joined^Qjoined\");","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"starchypotatocode"},"content":" public void tokenize_multipleWhitespaceTrimmed() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" String argsString \u003d \" -t Meow \\t Woof \\t\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"starchypotatocode"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, dashT);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Optional.of(\"Meow Woof\"), argMultimap.getValue(dashT));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Prefix aaa \u003d new Prefix(\"aaa\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertEquals(aaa, aaa);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertEquals(aaa, new Prefix(\"aaa\"));","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, \"aaa\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, new Prefix(\"aab\"));","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":10,"-":150}},{"path":"src/test/java/hallpointer/address/logic/parser/DeleteMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * outside of the DeleteMemberCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" * same path through the DeleteMemberCommand, and therefore we test only one of them.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"public class DeleteMemberCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private DeleteMemberCommandParser parser \u003d new DeleteMemberCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, \"1\", new DeleteMemberCommand(INDEX_FIRST_MEMBER));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":9,"-":24}},{"path":"src/test/java/hallpointer/address/logic/parser/EditMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_ROOM_DESC;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_THIRD_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand.EditMemberDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.EditMemberDescriptorBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":"public class EditMemberCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditMemberCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" private EditMemberCommandParser parser \u003d new EditMemberCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"1\", EditMemberCommand.MESSAGE_NOT_EDITED);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"1\" + INVALID_TELEGRAM_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" Telegram.MESSAGE_CONSTRAINTS); // invalid telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"1\" + INVALID_ROOM_DESC, Room.MESSAGE_CONSTRAINTS); // invalid room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegram followed by valid room","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"1\" + INVALID_TELEGRAM_DESC + ROOM_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Member} being edited,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_ROOM_DESC + VALID_TELEGRAM_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" String userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":" + ROOM_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptor \u003d new EditMemberDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withRoom(VALID_ROOM_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand expectedCommand \u003d new EditMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" String userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_BOB + ROOM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptor \u003d new EditMemberDescriptorBuilder()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withRoom(VALID_ROOM_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand expectedCommand \u003d new EditMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_THIRD_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptor \u003d new EditMemberDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand expectedCommand \u003d new EditMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"starchypotatocode"},"content":" // telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"starchypotatocode"},"content":" descriptor \u003d new EditMemberDescriptorBuilder().withTelegram(VALID_TELEGRAM_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"starchypotatocode"},"content":" expectedCommand \u003d new EditMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"starchypotatocode"},"content":" // room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"starchypotatocode"},"content":" descriptor \u003d new EditMemberDescriptorBuilder().withRoom(VALID_ROOM_AMY).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" expectedCommand \u003d new EditMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"starchypotatocode"},"content":" descriptor \u003d new EditMemberDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"starchypotatocode"},"content":" expectedCommand \u003d new EditMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"starchypotatocode"},"content":" // AddMemberCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"starchypotatocode"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_TELEGRAM_DESC + TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_BOB + INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_AMY + ROOM_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"starchypotatocode"},"content":" + TAG_DESC_FRIEND + TELEGRAM_DESC_AMY + ROOM_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"starchypotatocode"},"content":" + TELEGRAM_DESC_BOB + ROOM_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM, PREFIX_ROOM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_TELEGRAM_DESC + INVALID_ROOM_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"starchypotatocode"},"content":" + INVALID_TELEGRAM_DESC + INVALID_ROOM_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM, PREFIX_ROOM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_THIRD_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"starchypotatocode"},"content":" EditMemberDescriptor descriptor \u003d new EditMemberDescriptorBuilder().withTags().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"starchypotatocode"},"content":" EditMemberCommand expectedCommand \u003d new EditMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":72,"-":125}},{"path":"src/test/java/hallpointer/address/logic/parser/FindMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.FindMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"public class FindMemberCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" private FindMemberCommandParser parser \u003d new FindMemberCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand expectedFindMemberCommand \u003d","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" new FindMemberCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindMemberCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindMemberCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":10,"-":25}},{"path":"src/test/java/hallpointer/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private static final String INVALID_TELEGRAM \u003d \"+hisrocks\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" private static final String INVALID_ROOM \u003d \" \";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" private static final String VALID_TELEGRAM \u003d \"elephant\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" private static final String VALID_ROOM \u003d \"8/7/23\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(INDEX_FIRST_MEMBER, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(INDEX_FIRST_MEMBER, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" public void parseTelegram_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTelegram((String) null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" public void parseTelegram_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTelegram(INVALID_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" public void parseTelegram_validValueWithoutWhitespace_returnsTelegram() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(VALID_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" public void parseTelegram_validValueWithWhitespace_returnsTrimmedTelegram() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" String telegramWithWhitespace \u003d WHITESPACE + VALID_TELEGRAM + WHITESPACE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(telegramWithWhitespace));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" public void parseRoom_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRoom((String) null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" public void parseRoom_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseRoom(INVALID_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" public void parseRoom_validValueWithoutWhitespace_returnsRoom() throws Exception {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" Room expectedRoom \u003d new Room(VALID_ROOM);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedRoom, ParserUtil.parseRoom(VALID_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" public void parseRoom_validValueWithWhitespace_returnsTrimmedRoom() throws Exception {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" String roomWithWhitespace \u003d WHITESPACE + VALID_ROOM + WHITESPACE;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" Room expectedRoom \u003d new Room(VALID_ROOM);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedRoom, ParserUtil.parseRoom(roomWithWhitespace));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":32,"-":138}},{"path":"src/test/java/hallpointer/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.DuplicateMemberException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Collections.emptyList(), addressBook.getMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" public void resetData_withDuplicateMembers_throwsDuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" // Two members with the same identity fields","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e newMembers \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" AddressBookStub newData \u003d new AddressBookStub(newMembers);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DuplicateMemberException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasMembers(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(addressBook.hasMembers(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberInAddressBook_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(addressBook.hasMembers(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(addressBook.hasMembers(editedAlice));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" public void getMemberList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getMemberList().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{members\u003d\" + addressBook.getMemberList() + \"}\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" * A stub ReadOnlyAddressBook whose members list can violate interface constraints.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" private final ObservableList\u003cMember\u003e members \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" AddressBookStub(Collection\u003cMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":" this.members.setAll(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" return members;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":33,"-":75}},{"path":"src/test/java/hallpointer/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.model.Model.PREDICATE_SHOW_ALL_MEMBERS;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BENSON;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.testutil.AddressBookBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasMember(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(modelManager.hasMember(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberInAddressBook_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" modelManager.addMember(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(modelManager.hasMember(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" public void getFilteredMemberList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredMemberList().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withMember(ALICE).withMember(BENSON).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" modelManager.updateFilteredMemberList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"starchypotatocode"},"content":" modelManager.updateFilteredMemberList(PREDICATE_SHOW_ALL_MEMBERS);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":16,"-":116}},{"path":"src/test/java/hallpointer/address/model/member/MemberTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BOB;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"public class MemberTest {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e member.getTags().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" public void isSameMember() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(ALICE.isSameMember(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(ALICE.isSameMember(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(ALICE.isSameMember(editedAlice));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" editedAlice \u003d new MemberBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(ALICE.isSameMember(editedAlice));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" Member editedBob \u003d new MemberBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(BOB.isSameMember(editedBob));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" editedBob \u003d new MemberBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(BOB.isSameMember(editedBob));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" Member aliceCopy \u003d new MemberBuilder(ALICE).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" editedAlice \u003d new MemberBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" editedAlice \u003d new MemberBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d Member.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" + \", telegram\u003d\" + ALICE.getTelegram() + \", room\u003d\" + ALICE.getRoom()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":31,"-":64}},{"path":"src/test/java/hallpointer/address/model/member/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" // Two matching keywords, out of order","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\", \"Alice\"));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(predicate.test(new MemberBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(predicate.test(new MemberBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" // Keywords match telegram and room, but does not match name","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aliceinwonderland\", \"1/2/3\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(predicate.test(new MemberBuilder().withName(\"Alice\").withTelegram(\"aliceinwonderland\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"1/2/3\").build()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":16,"-":73}},{"path":"src/test/java/hallpointer/address/model/member/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":59}},{"path":"src/test/java/hallpointer/address/model/member/RoomTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"public class RoomTest {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e new Room(null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_invalidRoom_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" String invalidRoom \u003d \"\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Room(invalidRoom));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" public void isValidRoom() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" // null room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e Room.isValidRoom(null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" // invalid rooms","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"\")); // empty string","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"//\")); // slashes only","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"-1/2/3\")); // invalid number","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"1/0.2/3\")); // invalid decimal","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"1/2/\")); // missing numbers","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"1/2\")); // insufficient input","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"3 2 3\")); // no slashes","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"/1/2/3/\")); // too many slashes","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"1/2/3/4\")); // incorrect extra input","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"3/2/3 0\")); // also incorrect extra input","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" // valid rooms","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Room.isValidRoom(\"1/2/3\"));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Room.isValidRoom(\"1/2/0\")); // 0 is also acceptable here","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Room.isValidRoom(\"1000/2000/3000\")); // long room numbers","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Room.isValidRoom(\"1000000000000/9/9\")); // duplicate numbers","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" public void equals() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" Room room \u003d new Room(\"1/2/3\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(room.equals(new Room(\"1/2/3\")));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(room.equals(room));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(room.equals(null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(room.equals(5.0f));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(room.equals(new Room(\"2/3/4\")));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":68}},{"path":"src/test/java/hallpointer/address/model/member/TelegramTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"public class TelegramTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e new Telegram(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_invalidTelegram_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" String invalidTelegram \u003d \"\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Telegram(invalidTelegram));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" public void isValidTelegram() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" // null telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e Telegram.isValidTelegram(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegrams: length \u0026 character set","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"\")); // empty string","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"eeee\")); // less than 5 chars","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"r456e\u0026\")); // non-underscore symbols","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"ben ten\")); // spaces","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"cccccdddddeeeeefffffggggghhhhhiii\")); // more than 33 characters","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_\")); // certain regexes fail this","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegrams: starting and ending requirements","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"_aaaaaa\")); // start cannot be underscores","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"1aaaaaa\")); // start cannot be numberic","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"tota1\")); // end cannot be numeric","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" // valid telegrams","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"AAAAA\")); // exactly 5 chars, just caps","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"bbbbbbbb\")); // just lowercase","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"A22W_f_wfe3\")); // numbers and underscores ok","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"A_____A\")); // consecutive underscores ok","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\")); // exactly 32 chars","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"Ra_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a\")); // certain regexes may fail this too","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" public void equals() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" Telegram telegram \u003d new Telegram(\"vegetable\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(telegram.equals(new Telegram(\"vegetable\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(telegram.equals(telegram));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(telegram.equals(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(telegram.equals(5.0f));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(telegram.equals(new Telegram(\"banana\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":69}},{"path":"src/test/java/hallpointer/address/model/member/UniqueMemberListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BOB;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import java.util.Collections;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import java.util.List;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.DuplicateMemberException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.MemberNotFoundException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"public class UniqueMemberListTest {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private final UniqueMemberList uniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" public void contains_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.contains(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" public void contains_memberNotInList_returnsFalse() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(uniqueMemberList.contains(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" public void contains_memberInList_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(uniqueMemberList.contains(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" public void contains_memberWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" .build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(uniqueMemberList.contains(editedAlice));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" public void add_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.add(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" public void add_duplicateMember_throwsDuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DuplicateMemberException.class, () -\u003e uniqueMemberList.add(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_nullTargetMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.setMember(null, ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_nullEditedMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.setMember(ALICE, null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_targetMemberNotInList_throwsMemberNotFoundException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(MemberNotFoundException.class, () -\u003e uniqueMemberList.setMember(ALICE, ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_editedMemberIsSameMember_success() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMember(ALICE, ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_editedMemberHasSameIdentity_success() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" .build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMember(ALICE, editedAlice);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(editedAlice);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_editedMemberHasDifferentIdentity_success() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMember(ALICE, BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_editedMemberHasNonUniqueIdentity_throwsDuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DuplicateMemberException.class, () -\u003e uniqueMemberList.setMember(ALICE, BOB));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" public void remove_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.remove(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" public void remove_memberDoesNotExist_throwsMemberNotFoundException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(MemberNotFoundException.class, () -\u003e uniqueMemberList.remove(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"starchypotatocode"},"content":" public void remove_existingMember_removesMember() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.remove(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_nullUniqueMemberList_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.setMembers((UniqueMemberList) null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_uniqueMemberList_replacesOwnListWithProvidedUniqueMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMembers(expectedUniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.setMembers((List\u003cMember\u003e) null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e memberList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMembers(memberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_listWithDuplicateMembers_throwsDuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e listWithDuplicateMembers \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DuplicateMemberException.class, () -\u003e uniqueMemberList.setMembers(listWithDuplicateMembers));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"starchypotatocode"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"starchypotatocode"},"content":" -\u003e uniqueMemberList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"starchypotatocode"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(uniqueMemberList.asUnmodifiableObservableList().toString(), uniqueMemberList.toString());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":175}},{"path":"src/test/java/hallpointer/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.util;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":" * Tests whether the SampleDataUtil\u0027s data remain valid after changes elsewhere.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" public void getSampleMembers_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" assertDoesNotThrow(SampleDataUtil::getSampleMembers);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public void getSampleAddressBook_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" assertDoesNotThrow(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":21}},{"path":"src/test/java/hallpointer/address/storage/JsonAdaptedMemberTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.storage.JsonAdaptedMember.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BENSON;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"public class JsonAdaptedMemberTest {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private static final String INVALID_TELEGRAM \u003d \"+651234\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" private static final String INVALID_ROOM \u003d \" \";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" private static final String VALID_TELEGRAM \u003d BENSON.getTelegram().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" private static final String VALID_ROOM \u003d BENSON.getRoom().toString();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_validMemberDetails_returnsMember() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d new JsonAdaptedMember(BENSON);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(BENSON, member.toModelType());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" new JsonAdaptedMember(INVALID_NAME, VALID_TELEGRAM, VALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d new JsonAdaptedMember(null, VALID_TELEGRAM, VALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_invalidTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" new JsonAdaptedMember(VALID_NAME, INVALID_TELEGRAM, VALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d Telegram.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_nullTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d new JsonAdaptedMember(VALID_NAME, null, VALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Telegram.class.getSimpleName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" new JsonAdaptedMember(VALID_NAME, VALID_TELEGRAM, INVALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d Room.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d new JsonAdaptedMember(VALID_NAME, VALID_TELEGRAM, null, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Room.class.getSimpleName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" new JsonAdaptedMember(VALID_NAME, VALID_TELEGRAM, VALID_ROOM, invalidTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":37,"-":55}},{"path":"src/test/java/hallpointer/address/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.HOON;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.IDA;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" public void readAddressBook_invalidMemberAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidMemberAddressBook.json\"));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" public void readAddressBook_invalidAndValidMemberAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidMemberAddressBook.json\"));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" original.addMember(HOON);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" original.removeMember(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" original.addMember(IDA);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":11,"-":99}},{"path":"src/test/java/hallpointer/address/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.JsonUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.TypicalMembers;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" private static final Path TYPICAL_MEMBERS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalMembersAddressBook.json\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" private static final Path INVALID_MEMBER_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidMemberAddressBook.json\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private static final Path DUPLICATE_MEMBER_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateMemberAddressBook.json\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_typicalMembersFile_success() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_MEMBERS_FILE,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" AddressBook typicalMembersAddressBook \u003d TypicalMembers.getTypicalAddressBook();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(addressBookFromFile, typicalMembersAddressBook);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_invalidMemberFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_MEMBER_FILE,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_duplicateMembers_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_MEMBER_FILE,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_MEMBER,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":13,"-":34}},{"path":"src/test/java/hallpointer/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":67}},{"path":"src/test/java/hallpointer/address/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withMember(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" addressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * Adds a new {@code Member} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" public AddressBookBuilder withMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":5,"-":29}},{"path":"src/test/java/hallpointer/address/testutil/EditMemberDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import java.util.Set;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand.EditMemberDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" * A utility class to help with building EditMemberDescriptor objects.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"public class EditMemberDescriptorBuilder {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" private EditMemberDescriptor descriptor;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptorBuilder() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" descriptor \u003d new EditMemberDescriptor();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptorBuilder(EditMemberDescriptor descriptor) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" this.descriptor \u003d new EditMemberDescriptor(descriptor);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" * Returns an {@code EditMemberDescriptor} with fields containing {@code member}\u0027s details","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptorBuilder(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" descriptor \u003d new EditMemberDescriptor();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" descriptor.setName(member.getName());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" descriptor.setTelegram(member.getTelegram());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" descriptor.setRoom(member.getRoom());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" descriptor.setTags(member.getTags());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" * Sets the {@code Name} of the {@code EditMemberDescriptor} that we are building.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" return this;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" * Sets the {@code Telegram} of the {@code EditMemberDescriptor} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptorBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" descriptor.setTelegram(new Telegram(telegram));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" return this;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" * Sets the {@code Room} of the {@code EditMemberDescriptor} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptorBuilder withRoom(String room) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" descriptor.setRoom(new Room(room));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" return this;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code EditMemberDescriptor}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" * that we are building.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" return this;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" public EditMemberDescriptor build() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" return descriptor;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":77}},{"path":"src/test/java/hallpointer/address/testutil/MemberBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * A utility class to help with building Member objects.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"public class MemberBuilder {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"beeHappy\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" public static final String DEFAULT_ROOM \u003d \"5/12/207\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private Room room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" * Creates a {@code MemberBuilder} with the default details.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" telegram \u003d new Telegram(DEFAULT_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" room \u003d new Room(DEFAULT_ROOM);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" * Initializes the MemberBuilder with the data of {@code memberToCopy}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder(Member memberToCopy) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" name \u003d memberToCopy.getName();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" telegram \u003d memberToCopy.getTelegram();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" room \u003d memberToCopy.getRoom();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" tags \u003d new HashSet\u003c\u003e(memberToCopy.getTags());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" * Sets the {@code Name} of the {@code Member} that we are building.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder withName(String name) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Member} that we are building.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder withTags(String ... tags) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" * Sets the {@code Room} of the {@code Member} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder withRoom(String room) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" this.room \u003d new Room(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" * Sets the {@code Telegram} of the {@code Member} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" this.telegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" public Member build() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" return new Member(name, telegram, room, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":32,"-":52}},{"path":"src/test/java/hallpointer/address/testutil/MemberUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.EditMemberCommand.EditMemberDescriptor;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * A utility class for Member.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"public class MemberUtil {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" * Returns an add command string for adding the {@code member}.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" public static String getAddCommand(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" return AddMemberCommand.COMMAND_WORD + \" \" + getMemberDetails(member);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" * Returns the part of command string for the given {@code member}\u0027s details.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public static String getMemberDetails(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" sb.append(PREFIX_NAME + member.getName().fullName + \" \");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" sb.append(PREFIX_TELEGRAM + member.getTelegram().value + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" sb.append(PREFIX_ROOM + member.getRoom().value + \" \");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" member.getTags().stream().forEach(","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" * Returns the part of command string for the given {@code EditMemberDescriptor}\u0027s details.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" public static String getEditMemberDescriptorDetails(EditMemberDescriptor descriptor) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" descriptor.getTelegram().ifPresent(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" telegram -\u003e sb.append(PREFIX_TELEGRAM).append(telegram.value).append(\" \"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" descriptor.getRoom().ifPresent(room -\u003e sb.append(PREFIX_ROOM).append(room.value).append(\" \"));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":21,"-":39}},{"path":"src/test/java/hallpointer/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" * Returns the middle index of the member in the {@code model}\u0027s member list.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" return Index.fromOneBased(model.getFilteredMemberList().size() / 2);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" * Returns the last index of the member in the {@code model}\u0027s member list.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" return Index.fromOneBased(model.getFilteredMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" * Returns the member in the {@code model}\u0027s member list at {@code index}.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" public static Member getMember(Model model, Index index) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" return model.getFilteredMemberList().get(index.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":8,"-":47}},{"path":"src/test/java/hallpointer/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" public static final Index INDEX_FIRST_MEMBER \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":" public static final Index INDEX_SECOND_MEMBER \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" public static final Index INDEX_THIRD_MEMBER \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":9}},{"path":"src/test/java/hallpointer/address/testutil/TypicalMembers.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" * A utility class containing a list of {@code Member} objects to be used in tests.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"public class TypicalMembers {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" public static final Member ALICE \u003d new MemberBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"6/3/20\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(\"PauLice\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" public static final Member BENSON \u003d new MemberBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"6/10/95\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(\"benson_meier\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" public static final Member CARL \u003d new MemberBuilder().withName(\"Carl Kurz\").withTelegram(\"kurZ0123\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"7/8/10\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" public static final Member DANIEL \u003d new MemberBuilder().withName(\"Daniel Meier\").withTelegram(\"whisperWhiz23\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"1/3/3\").withTags(\"friends\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" public static final Member ELLE \u003d new MemberBuilder().withName(\"Elle Meyer\").withTelegram(\"meyer_for_lif3\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"4/5/55\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" public static final Member FIONA \u003d new MemberBuilder().withName(\"Fiona Kunz\").withTelegram(\"FIONAKUNZ\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"8/10/300\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public static final Member GEORGE \u003d new MemberBuilder().withName(\"George Best\").withTelegram(\"B357650463\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"90/2/8\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" public static final Member HOON \u003d new MemberBuilder().withName(\"Hoon Meier\").withTelegram(\"meier__5002\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"7/7/45\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" public static final Member IDA \u003d new MemberBuilder().withName(\"Ida Mueller\").withTelegram(\"idaMueller\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"6/4/38\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" // Manually added - Member\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" public static final Member AMY \u003d new MemberBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(VALID_ROOM_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" public static final Member BOB \u003d new MemberBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" private TypicalMembers() {} // prevents instantiation","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" * Returns an {@code AddressBook} with all the typical members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" for (Member member : getTypicalMembers()) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" ab.addMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" public static List\u003cMember\u003e getTypicalMembers() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":39,"-":37}}] +[{"path":"README.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W14-3/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2425S1-CS2103T-W14-3/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"![Ui](docs/images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"**HallPointer** is a desktop application specifically designed for CCA (Co-Curricular Activity) leaders in NUS Halls to efficiently manage hall points and member participation. The application allows users to track attendance, allocate points, and maintain member details. While HallPointer features a GUI, most of the interactions are optimized for use with a Command Line Interface (CLI).","lastModifiedDate":"2024-10-02","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":6,"-":3}},{"path":"build.gradle","fileType":"other","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" id \u0027jacoco\u0027","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"mainClassName \u003d \u0027hallpointer.address.Main\u0027","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"sourceCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"targetCompatibility \u003d JavaVersion.VERSION_17","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" maven { url \u0027https://oss.sonatype.org/content/repositories/snapshots/\u0027 }","lastModifiedDate":"2018-04-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"checkstyle {","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" toolVersion \u003d \u002710.2\u0027","lastModifiedDate":"2022-04-29","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" finalizedBy jacocoTestReport","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"task coverage(type: JacocoReport) {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" sourceDirectories.from files(sourceSets.main.allSource.srcDirs)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" classDirectories.from files(sourceSets.main.output)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" executionData.from files(jacocoTestReport.executionData)","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" afterEvaluate {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" classDirectories.from files(classDirectories.files.collect {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" fileTree(dir: it, exclude: [\u0027**/*.jar\u0027])","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" })","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" reports {","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" html.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" xml.required \u003d true","lastModifiedDate":"2022-06-17","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" String jUnitVersion \u003d \u00275.4.0\u0027","lastModifiedDate":"2019-02-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" String javaFxVersion \u003d \u002717.0.7\u0027","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-base\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-controls\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-fxml\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027win\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027mac\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" implementation group: \u0027org.openjfx\u0027, name: \u0027javafx-graphics\u0027, version: javaFxVersion, classifier: \u0027linux\u0027","lastModifiedDate":"2019-02-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.core\u0027, name: \u0027jackson-databind\u0027, version: \u00272.7.0\u0027","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" implementation group: \u0027com.fasterxml.jackson.datatype\u0027, name: \u0027jackson-datatype-jsr310\u0027, version: \u00272.7.4\u0027","lastModifiedDate":"2018-03-29","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: jUnitVersion","lastModifiedDate":"2018-03-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" archiveFileName \u003d \u0027hallpointer.jar\u0027","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":"run {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" enableAssertions \u003d true","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"defaultTasks \u0027clean\u0027, \u0027test\u0027","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":73}},{"path":"docs/AboutUs.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"About Us\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"# About Us","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"We are a team based in the [School of Computing, National University of Singapore](http://www.comp.nus.edu.sg).","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"taggyhan"},"content":"You can reach us at the email seer[at]comp.nus.edu.sg","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"## Project team","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"QinHaichen12"},"content":"### Qin Haichen","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"QinHaichen12"},"content":"\u003cimg src\u003d\"images/qinhaichen12.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"QinHaichen12"},"content":"[[github](https://github.com/QinHaichen12)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"QinHaichen12"},"content":"[[portfolio](team/qinhaichen12.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":"- Responsibilities: Data, UI","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"yuvrajaryan"},"content":"### Yuvraj Aryan Singh","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"yuvrajaryan"},"content":"\u003cimg src\u003d\"images/yuvrajaryan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"yuvrajaryan"},"content":"[[github](http://github.com/yuvrajaryan)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"yuvrajaryan"},"content":"[[portfolio](team/yuvrajaryan.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":"- Responsibilities: Data, UI","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":"### Daniel Lai","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":"\u003cimg src\u003d\"images/starchypotatocode.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"[[github](http://github.com/starchypotatocode)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"[[portfolio](team/starchypotatocode.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":"- Responsibilities: Testing, Integration","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"### Keith Ong","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":"\u003cimg src\u003d\"images/keithxun.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":"[[github](http://github.com/keithxun)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":"[[portfolio](team/keithxun.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"taggyhan"},"content":"- Responsibilities: UI","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"taggyhan"},"content":"### Tag Han","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"taggyhan"},"content":"\u003cimg src\u003d\"images/taggyhan.png\" width\u003d\"200px\"\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":"[[github](https://github.com/taggyhan)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"taggyhan"},"content":"[[portfolio](team/taggyhan.md)]","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":"- Role: Developer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"taggyhan"},"content":"- Responsibilities: UI, Scheduling and tracking","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"yuvrajaryan":4,"taggyhan":13,"QinHaichen12":4,"starchypotatocode":6,"-":31,"keithxun":5}},{"path":"docs/DevOps.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"DevOps guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# DevOps guide","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c!-- -------------------------------------------------------------------------------------------------------------------- --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## Build automation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"This project uses Gradle for **build automation and dependency management**. **You are recommended to read [this Gradle Tutorial from the se-edu/guides](https://se-education.org/guides/tutorials/gradle.html)**.","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"Given below are how to use Gradle for some important project tasks.","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **`clean`**: Deletes the files created during the previous build tasks (e.g. files in the `build` folder).\u003cbr\u003e","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" e.g. `./gradlew clean`","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **`shadowJar`**: Uses the ShadowJar plugin to creat a fat JAR file in the `build/lib` folder, *if the current file is outdated*.\u003cbr\u003e","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" e.g. `./gradlew shadowJar`.","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"* **`run`**: Builds and runs the application.\u003cbr\u003e","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" **`runShadow`**: Builds the application as a fat JAR, and then runs it.","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"* **`checkstyleMain`**: Runs the code style check for the main code base.\u003cbr\u003e","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" **`checkstyleTest`**: Runs the code style check for the test code base.","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"* **`test`**: Runs all tests.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `./gradlew test` — Runs all tests","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * `./gradlew clean test` — Cleans the project and runs tests","lastModifiedDate":"2020-05-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"## Continuous integration (CI)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"This project uses GitHub Actions for CI. The project comes with the necessary GitHub Actions configurations files (in the `.github/workflows` folder). No further setting up required.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"### Code coverage","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"As part of CI, this project uses Codecov to generate coverage reports. When CI runs, it will generate code coverage data (based on the tests run by CI) and upload that data to the CodeCov website, which in turn can provide you more info about the coverage of your tests.","lastModifiedDate":"2023-02-02","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"However, because Codecov is known to run into intermittent problems (e.g., report upload fails) due to issues on the Codecov service side, the CI is configured to pass even if the Codecov task failed. Therefore, developers are advised to check the code coverage levels periodically and take corrective actions if the coverage level falls below desired levels.","lastModifiedDate":"2023-02-02","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-08-07","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"To enable Codecov for forks of this project, follow the steps given in [this se-edu guide](https://se-education.org/guides/tutorials/codecov.html).","lastModifiedDate":"2023-02-02","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"### Repository-wide checks","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"In addition to running Gradle checks, CI includes some repository-wide checks. Unlike the Gradle checks which only cover files used in the build process, these repository-wide checks cover all files in the repository. They check for repository rules which are hard to enforce on development machines such as line ending requirements.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"These checks are implemented as POSIX shell scripts, and thus can only be run on POSIX-compliant operating systems such as macOS and Linux. To run all checks locally on these operating systems, execute the following in the repository root directory:","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"`./config/travis/run-checks.sh`","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"Any warnings or errors will be printed out to the console.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"**If adding new checks:**","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"* Checks are implemented as executable `check-*` scripts within the `.github` directory. The `run-checks.sh` script will automatically pick up and run files named as such. That is, you can add more such files if you need and the CI will do the rest.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"* Check scripts should print out errors in the format `SEVERITY:FILENAME:LINE: MESSAGE`","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * SEVERITY is either ERROR or WARN.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * FILENAME is the path to the file relative to the current directory.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * LINE is the line of the file where the error occurred and MESSAGE is the message explaining the error.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"* Check scripts must exit with a non-zero exit code if any errors occur.","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-07-28","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"## Making a release","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"Here are the steps to create a new release.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":"1. Update the version number in [`MainApp.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/MainApp.java).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"1. Generate a fat JAR file using Gradle (i.e., `gradlew shadowJar`).","lastModifiedDate":"2021-08-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"1. Tag the repo with the version number. e.g. `v0.1`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"1. [Create a new release using GitHub](https://help.github.com/articles/creating-releases/). Upload the JAR file you created.","lastModifiedDate":"2020-05-26","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":81}},{"path":"docs/DeveloperGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"Developer Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# HallPointer Developer Guide","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"## **Acknowledgements**","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"_{ list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well }_","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"## **Setting up, getting started**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Refer to the guide [_Setting up and getting started_](SettingUp.md).","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"## **Design**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"### Architecture","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureDiagram.puml\" width\u003d\"280\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":"The **_Architecture Diagram_** given above explains the high-level design of the App.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"Given below is a quick overview of main components and how they interact with each other.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"**Main components of the architecture**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"**`Main`** (consisting of classes [`Main`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/Main.java) and [`MainApp`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/MainApp.java)) is in charge of the app launch and shut down.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":"- At app launch, it initializes the other components in the correct sequence, and connects them up with each other.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":"- At shut down, it shuts down the other components and invokes cleanup methods where necessary.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"The bulk of the app\u0027s work is done by the following four components:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"- [**`UI`**](#ui-component): The UI of the App.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":"- [**`Logic`**](#logic-component): The command executor.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":"- [**`Model`**](#model-component): Holds the data of the App in memory.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":"- [**`Storage`**](#storage-component): Reads data from, and writes data to, the hard disk.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"[**`Commons`**](#common-classes) represents a collection of classes used by multiple other components.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"**How the architecture components interact with each other**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"content":"The _Sequence Diagram_ below shows how the components interact with each other for the scenario where the user issues the command `delete 1`.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ArchitectureSequenceDiagram.puml\" width\u003d\"574\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"Each of the four main components (also shown in the diagram above),","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":"- defines its _API_ in an `interface` with the same name as the Component.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"keithxun"},"content":"- implements its functionality using a concrete `{Component Name}Manager` class (which follows the corresponding API `interface` mentioned in the previous point.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"For example, the `Logic` component defines its API in the `Logic.java` interface and implements its functionality using the `LogicManager.java` class which follows the `Logic` interface. Other components interact with a given component through its interface rather than the concrete class (reason: to prevent outside component\u0027s being coupled to the implementation of a component), as illustrated in the (partial) class diagram below.","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ComponentManagers.puml\" width\u003d\"300\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"The sections below give more details of each component.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### UI component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":"The **API** of this component is specified in [`Ui.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/ui/Ui.java)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UiClassDiagram.puml\" alt\u003d\"Structure of the UI Component\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":"The UI consists of a `MainWindow` that is made up of parts e.g.`CommandBox`, `ResultDisplay`, `MemberListPanel`, `StatusBarFooter` etc. All these, including the `MainWindow`, inherit from the abstract `UiPart` class which captures the commonalities between classes that represent parts of the visible GUI.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":"The `UI` component uses the JavaFx UI framework. The layout of these UI parts are defined in matching `.fxml` files that are in the `src/main/resources/view` folder. For example, the layout of the [`MainWindow`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/ui/MainWindow.java) is specified in [`MainWindow.fxml`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/resources/view/MainWindow.fxml)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"The `UI` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"keithxun"},"content":"- executes user commands using the `Logic` component.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"keithxun"},"content":"- listens for changes to `Model` data so that the UI can be updated with the modified data.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"keithxun"},"content":"- keeps a reference to the `Logic` component, because the `UI` relies on the `Logic` to execute commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"keithxun"},"content":"- depends on some classes in the `Model` component, as it displays `Member` object residing in the `Model`.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"### Logic component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":"**API** : [`Logic.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/logic/Logic.java)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"Here\u0027s a (partial) class diagram of the `Logic` component:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/LogicClassDiagram.puml\" width\u003d\"550\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"The sequence diagram below illustrates the interactions within the `Logic` component, taking `execute(\"delete 1\")` API call as an example.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/DeleteSequenceDiagram.puml\" alt\u003d\"Interactions Inside the Logic Component for the `delete 1` Command\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `DeleteCommandParser` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline continues till the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"How the `Logic` component works:","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"1. When `Logic` is called upon to execute a command, it is passed to an `AddressBookParser` object which in turn creates a parser that matches the command (e.g., `DeleteCommandParser`) and uses it to parse the command.","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"starchypotatocode"},"content":"2. This results in a `Command` object (more precisely, an object of one of its subclasses e.g., `DeleteCommand`) which is executed by the `LogicManager`.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":"3. The command can communicate with the `Model` when it is executed (e.g. to delete a member).\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" Note that although this is shown as a single step in the diagram above (for simplicity), in the code it can take several interactions (between the command object and the `Model`) to achieve.","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":"4. The result of the command execution is encapsulated as a `CommandResult` object which is returned back from `Logic`.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-03","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"Here are the other classes in `Logic` (omitted from the class diagram above) that are used for parsing a user command:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ParserClasses.puml\" width\u003d\"600\"/\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"How the parsing works:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"keithxun"},"content":"- When called upon to parse a user command, the `AddressBookParser` class creates an `XYZCommandParser` (`XYZ` is a placeholder for the specific command name e.g., `AddCommandParser`) which uses the other classes shown above to parse the user command and create a `XYZCommand` object (e.g., `AddCommand`) which the `AddressBookParser` returns back as a `Command` object.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"keithxun"},"content":"- All `XYZCommandParser` classes (e.g., `AddCommandParser`, `DeleteCommandParser`, ...) inherit from the `Parser` interface so that they can be treated similarly where possible e.g, during testing.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"### Model component","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":"**API** : [`Model.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/model/Model.java)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/ModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"The `Model` component,","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"keithxun"},"content":"- stores the address book data i.e., all `Member` objects (which are contained in a `UniqueMemberList` object).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"keithxun"},"content":"- stores the currently \u0027selected\u0027 `Member` objects (e.g., results of a search query) as a separate _filtered_ list which is exposed to outsiders as an unmodifiable `ObservableList\u003cMember\u003e` that can be \u0027observed\u0027 e.g. the UI can be bound to this list so that the UI automatically updates when the data in the list change.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"keithxun"},"content":"- stores a `UserPref` object that represents the user’s preferences. This is exposed to the outside as a `ReadOnlyUserPref` objects.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"keithxun"},"content":"- does not depend on any of the other three components (as the `Model` represents data entities of the domain, they should make sense on their own without depending on other components)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"starchypotatocode"},"content":"**Note:** An alternative (arguably, a more OOP) model is given below. It has a `Tag` list in the `AddressBook`, which `Member` references. This allows `AddressBook` to only require one `Tag` object per unique tag, instead of each `Member` needing their own `Tag` objects.\u003cbr\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/BetterModelClassDiagram.puml\" width\u003d\"450\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"### Storage component","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":"**API** : [`Storage.java`](https://ay2425s1-cs2103t-w14-3.github.io/tree/master/src/main/java/hallpointer/address/storage/Storage.java)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/StorageClassDiagram.puml\" width\u003d\"550\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"The `Storage` component,","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"keithxun"},"content":"- can save both address book data and user preference data in JSON format, and read them back into corresponding objects.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"keithxun"},"content":"- inherits from both `AddressBookStorage` and `UserPrefStorage`, which means it can be treated as either one (if only the functionality of only one is needed).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"keithxun"},"content":"- depends on some classes in the `Model` component (because the `Storage` component\u0027s job is to save/retrieve objects that belong to the `Model`)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"### Common classes","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"Classes used by multiple components are in the `hallpointer.address.commons` package.","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"## **Implementation**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"This section describes some noteworthy details on how certain features are implemented.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Undo/redo feature","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"#### Proposed Implementation","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"The proposed undo/redo mechanism is facilitated by `VersionedAddressBook`. It extends `AddressBook` with an undo/redo history, stored internally as an `addressBookStateList` and `currentStatePointer`. Additionally, it implements the following operations:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"keithxun"},"content":"- `VersionedAddressBook#commit()` — Saves the current address book state in its history.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"keithxun"},"content":"- `VersionedAddressBook#undo()` — Restores the previous address book state from its history.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"keithxun"},"content":"- `VersionedAddressBook#redo()` — Restores a previously undone address book state from its history.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"These operations are exposed in the `Model` interface as `Model#commitAddressBook()`, `Model#undoAddressBook()` and `Model#redoAddressBook()` respectively.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"Given below is an example usage scenario and how the undo/redo mechanism behaves at each step.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"Step 1. The user launches the application for the first time. The `VersionedAddressBook` will be initialized with the initial address book state, and the `currentStatePointer` pointing to that single address book state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState0.puml\" alt\u003d\"UndoRedoState0\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"starchypotatocode"},"content":"Step 2. The user executes `delete 5` command to delete the 5th member in the address book. The `delete` command calls `Model#commitAddressBook()`, causing the modified state of the address book after the `delete 5` command executes to be saved in the `addressBookStateList`, and the `currentStatePointer` is shifted to the newly inserted address book state.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState1.puml\" alt\u003d\"UndoRedoState1\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"starchypotatocode"},"content":"Step 3. The user executes `add n/David …​` to add a new member. The `add` command also calls `Model#commitAddressBook()`, causing another modified address book state to be saved into the `addressBookStateList`.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState2.puml\" alt\u003d\"UndoRedoState2\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"**Note:** If a command fails its execution, it will not call `Model#commitAddressBook()`, so the address book state will not be saved into the `addressBookStateList`.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"starchypotatocode"},"content":"Step 4. The user now decides that adding the member was a mistake, and decides to undo that action by executing the `undo` command. The `undo` command will call `Model#undoAddressBook()`, which will shift the `currentStatePointer` once to the left, pointing it to the previous address book state, and restores the address book to that state.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState3.puml\" alt\u003d\"UndoRedoState3\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index 0, pointing to the initial AddressBook state, then there are no previous AddressBook states to restore. The `undo` command uses `Model#canUndoAddressBook()` to check if this is the case. If so, it will return an error to the user rather","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":"than attempting to perform the undo.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":"The following sequence diagram shows how an undo operation goes through the `Logic` component:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Logic.puml\" alt\u003d\"UndoSequenceDiagram-Logic\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":"**Note:** The lifeline for `UndoCommand` should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":"Similarly, how an undo operation goes through the `Model` component is shown below:","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoSequenceDiagram-Model.puml\" alt\u003d\"UndoSequenceDiagram-Model\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":"The `redo` command does the opposite — it calls `Model#redoAddressBook()`, which shifts the `currentStatePointer` once to the right, pointing to the previously undone state, and restores the address book to that state.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":"**Note:** If the `currentStatePointer` is at index `addressBookStateList.size() - 1`, pointing to the latest address book state, then there are no undone AddressBook states to restore. The `redo` command uses `Model#canRedoAddressBook()` to check if this is the case. If so, it will return an error to the user rather than attempting to perform the redo.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"Step 5. The user then decides to execute the command `list`. Commands that do not modify the address book, such as `list`, will usually not call `Model#commitAddressBook()`, `Model#undoAddressBook()` or `Model#redoAddressBook()`. Thus, the `addressBookStateList` remains unchanged.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState4.puml\" alt\u003d\"UndoRedoState4\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":"Step 6. The user executes `clear`, which calls `Model#commitAddressBook()`. Since the `currentStatePointer` is not pointing at the end of the `addressBookStateList`, all address book states after the `currentStatePointer` will be purged. Reason: It no longer makes sense to redo the `add n/David …​` command. This is the behavior that most modern desktop applications follow.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/UndoRedoState5.puml\" alt\u003d\"UndoRedoState5\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":"The following activity diagram summarizes what happens when a user executes a new command:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":"\u003cpuml src\u003d\"diagrams/CommitActivityDiagram.puml\" width\u003d\"250\" /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":"#### Design considerations:","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"**Aspect: How undo \u0026 redo executes:**","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"keithxun"},"content":"- **Alternative 1 (current choice):** Saves the entire address book.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"keithxun"},"content":" - Pros: Easy to implement.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"keithxun"},"content":" - Cons: May have performance issues in terms of memory usage.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"keithxun"},"content":"- **Alternative 2:** Individual command knows how to undo/redo by","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":" itself.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"keithxun"},"content":" - Pros: Will use less memory (e.g. for `delete`, just save the member being deleted).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"keithxun"},"content":" - Cons: We must ensure that the implementation of each individual command are correct.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"_{more aspects and alternatives to be added}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":"### \\[Proposed\\] Data archiving","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"_{Explain here how the data archiving feature will be implemented}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"## **Documentation, logging, testing, configuration, dev-ops**","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"keithxun"},"content":"- [Documentation guide](Documentation.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"keithxun"},"content":"- [Testing guide](Testing.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"keithxun"},"content":"- [Logging guide](Logging.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"keithxun"},"content":"- [Configuration guide](Configuration.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"keithxun"},"content":"- [DevOps guide](DevOps.md)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"## **Appendix: Requirements**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":"### Product scope","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"**Target user profile**:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"keithxun"},"content":"- is a CCA leader in a NUS Hall","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"keithxun"},"content":"- is responsible for managing member participation, tracking attendance, and allocating points","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"keithxun"},"content":"- prefers streamlined solutions to minimize manual administrative work","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"keithxun"},"content":"- comfortable with both desktop and command-line interfaces (CLI)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"keithxun"},"content":"- often managing multiple responsibilities, including academic workload and hall duties","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"yuvrajaryan"},"content":"**Value proposition**: Hall Pointer empowers CCA leaders in NUS Halls to efficiently manage member tracking by streamlining participation recording, points allocation, and member information (such as room addresses). It simplifies manual data management, allowing leaders to focus on organizing activities rather than administrative tasks. Ideal for small, close-knit CCAs, it ensures quick access to updated information, enabling accurate and easy sharing of participation records with hall management or other stakeholders.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"### User stories","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":"Priorities: High (must have) - `* * *`, Medium (nice to have) - `* *`, Low (unlikely to have) - `*`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"keithxun"},"content":"| Priority | As a …​ | I want to …​ | So that I can …​ | Remarks/Notes |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"keithxun"},"content":"| -------- | --------------- | ---------------------------------------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | Explore the app using sample data | I can understand its features without manually entering data | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | See a guide on how to use the app | I can better understand its functionalities | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | Save the changes I made | I won’t have to redo my work after reopening the app | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | See sample data with a predefined structure | I have a format to follow when inputting my own data | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"keithxun"},"content":"| `* * *` | First-time user | Delete all data in the app | I can start over when I make a mistake and remove sample data | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"keithxun"},"content":"| `* * *` | User | Add new users to the app | I can track points for new Hall members | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"keithxun"},"content":"| `* * *` | User | Delete existing users from the app | I can stop tracking points for ex-Hall members | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"keithxun"},"content":"| `* * *` | User | Customize point allocation criteria | I can reward members based on different participation criteria | E.g., different point weights for different activities |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"keithxun"},"content":"| `* * *` | Frequent user | Add or delete points for each member | I can track the overall participation status in the CCA | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"keithxun"},"content":"| `* * *` | Frequent user | Adjust attendance records if there are any errors | I can fix mistakes and maintain accurate records | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"keithxun"},"content":"| `* * *` | Frequent user | Filter the data to see members with low attendance | I can identify which members need attention | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"keithxun"},"content":"| `* * *` | User | Edit member details (e.g., name, contact) | I can keep the member database up to date | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"keithxun"},"content":"| `* *` | First-time user | Import data from an existing Google Sheets document or csv file | I can quickly upload my data without manual entry | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"keithxun"},"content":"| `* *` | Frequent user | Automatically track attendance at each session | I don\u0027t need to manually mark attendance for each session | Using QR codes? That would need some kind of integration though, would be complicated |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"keithxun"},"content":"| `* *` | Frequent user | See a breakdown of points for each member quickly | I can monitor attendance records without navigating multiple screens | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"keithxun"},"content":"| `* *` | Frequent user | Export attendance data | I can share participation reports with other stakeholders if needed | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"keithxun"},"content":"| `* *` | User | Bulk update attendance or points for multiple members | I can efficiently manage large groups | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"keithxun"},"content":"| `* *` | User | Set up custom attendance categories (e.g., Excused, Late) | I can categorize different types of attendance | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"keithxun"},"content":"| `* *` | User | View analytics or visual reports of attendance and participation | I can see trends and member engagement at a glance | Charts or graphs to visualize data |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"keithxun"},"content":"| `*` | User | Sort members by name | I can locate a member easily | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"keithxun"},"content":"| `*` | Frequent user | Automatically save changes without manual intervention | I don’t lose progress if I forget to click save | Auto-save feature |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"keithxun"},"content":"| `*` | Expert user | Perform all actions using the CLI | I can interact with the app more efficiently without relying on the GUI | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"keithxun"},"content":"| `*` | Expert user | Automate repetitive tasks, such as attendance updates | I can save time by reducing manual input | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"keithxun"},"content":"| `*` | User | Add notes for each member | I can track special situations or reasons for absences | |","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":"### Use cases","lastModifiedDate":"2020-06-07","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC01 - Add Member to CCA","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"QinHaichen12"},"content":"**Description**: This use case allows a CCA leader to add a new member to the CCA for attendance tracking and point allocation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"QinHaichen12"},"content":"1. The CCA Leader must know the details of the new member.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"starchypotatocode"},"content":"1. CCA Leader inputs the `add_member` command with required details (name, room number, and telegram).","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"QinHaichen12"},"content":" - Example: `add_member /name John Doe /room 4/3/301 /tele johndoe123`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer validates the entered details for the new member.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"QinHaichen12"},"content":"3. Hall Pointer adds the member to the system and displays a success message.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"QinHaichen12"},"content":"4. The new member is displayed in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"QinHaichen12"},"content":"- **2a. Hall Pointer detects an error in the entered data**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer requests for correct data with an error message indicating the invalid field.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"QinHaichen12"},"content":" - 2a2. CCA Leader re-enters corrected data.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"QinHaichen12"},"content":" - Steps 2a1-2a2 are repeated until all data is correct.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"QinHaichen12"},"content":" - Use case resumes from step 3.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"QinHaichen12"},"content":"- **2b. Duplicate member is detected**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"QinHaichen12"},"content":" - 2b1. Hall Pointer displays an error message: `Error: Member John Doe already exists.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"QinHaichen12"},"content":"- **\\*a. At any time, CCA Leader chooses to cancel the add member operation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"QinHaichen12"},"content":" - \\*a1. Hall Pointer requests confirmation of the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"QinHaichen12"},"content":" - \\*a2. CCA Leader confirms the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":353,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":354,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":355,"author":{"gitId":"QinHaichen12"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":356,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":357,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC02 - Add Session to CCA","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":358,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":359,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":360,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":361,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":362,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":363,"author":{"gitId":"QinHaichen12"},"content":"**Description**: This use case allows a CCA leader to add a new CCA session to the system for tracking attendance and point allocation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":364,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":365,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":366,"author":{"gitId":"QinHaichen12"},"content":"1. The CCA Leader must know the details of the session such as name, date, and points.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":367,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":368,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":369,"author":{"gitId":"QinHaichen12"},"content":"1. CCA Leader inputs the `add_session` command with session details (name, date, and points).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":370,"author":{"gitId":"QinHaichen12"},"content":" - Example: `add_session rehearsal /date 2024-09-19 /points 2`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":371,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer validates the entered session details.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":372,"author":{"gitId":"QinHaichen12"},"content":"3. Hall Pointer adds the session to the system and displays a success message.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":373,"author":{"gitId":"QinHaichen12"},"content":"4. The new session is displayed in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":374,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":375,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":376,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":377,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":378,"author":{"gitId":"QinHaichen12"},"content":"- **2a. Hall Pointer detects an error in the entered data**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":379,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer requests for correct data with an error message indicating the invalid field.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":380,"author":{"gitId":"QinHaichen12"},"content":" - 2a2. CCA Leader re-enters corrected data.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":381,"author":{"gitId":"QinHaichen12"},"content":" - Steps 2a1-2a2 are repeated until all data is correct.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":382,"author":{"gitId":"QinHaichen12"},"content":" - Use case resumes from step 3.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":383,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":384,"author":{"gitId":"QinHaichen12"},"content":"- **2b. Duplicate session is detected**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":385,"author":{"gitId":"QinHaichen12"},"content":" - 2b1. Hall Pointer displays an error message: `Error: Session rehearsal already exists.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":386,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":387,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":388,"author":{"gitId":"QinHaichen12"},"content":"- **\\*a. At any time, CCA Leader chooses to cancel the add session operation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":389,"author":{"gitId":"QinHaichen12"},"content":" - \\*a1. Hall Pointer requests confirmation of the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":390,"author":{"gitId":"QinHaichen12"},"content":" - \\*a2. CCA Leader confirms the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":391,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":392,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":393,"author":{"gitId":"QinHaichen12"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":394,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":395,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC03 - Mark Member Present for a Session","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":396,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":397,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":398,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":399,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":400,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":401,"author":{"gitId":"QinHaichen12"},"content":"**Description**: This use case allows a CCA leader to mark a member as present for a specific CCA session.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":402,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":403,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":404,"author":{"gitId":"QinHaichen12"},"content":"1. The member and session must exist in the system.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":405,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":406,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":407,"author":{"gitId":"QinHaichen12"},"content":"1. CCA Leader inputs the `mark_present` command with the member name and session name.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":408,"author":{"gitId":"QinHaichen12"},"content":" - Example: `mark_present John Doe /session volleyball training`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":409,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer validates the member and session details.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":410,"author":{"gitId":"QinHaichen12"},"content":"3. Hall Pointer records the attendance and displays a success message:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":411,"author":{"gitId":"QinHaichen12"},"content":" - `Attendance recorded for John Doe on volleyball training.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":412,"author":{"gitId":"QinHaichen12"},"content":"4. The updated attendance is reflected in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":413,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":414,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":415,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":416,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":417,"author":{"gitId":"QinHaichen12"},"content":"- **2a. Member or session not found**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":418,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer displays an error message indicating the missing entity.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":419,"author":{"gitId":"QinHaichen12"},"content":" - `Failed to log attendance: member or session does not exist.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":420,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":421,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":422,"author":{"gitId":"QinHaichen12"},"content":"- **\\*a. At any time, CCA Leader chooses to cancel the mark present operation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":423,"author":{"gitId":"QinHaichen12"},"content":" - \\*a1. Hall Pointer requests confirmation of the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":424,"author":{"gitId":"QinHaichen12"},"content":" - \\*a2. CCA Leader confirms the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":425,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":426,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":427,"author":{"gitId":"QinHaichen12"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":428,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":429,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC04 - Update Member Information","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":430,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":431,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":432,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":433,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":434,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":435,"author":{"gitId":"starchypotatocode"},"content":"**Description**: This use case allows a CCA leader to update the details of an existing member, such as room number, telegram, or tags.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":436,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":437,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":438,"author":{"gitId":"QinHaichen12"},"content":"1. The member to be updated must exist in the system.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":439,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":440,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":441,"author":{"gitId":"QinHaichen12"},"content":"1. CCA Leader inputs the `update_member` command with the member name and new details.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":442,"author":{"gitId":"QinHaichen12"},"content":" - Example: `update_member John Doe /room 9/10/203 /tag friend`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":443,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer validates the member and new details.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":444,"author":{"gitId":"QinHaichen12"},"content":"3. Hall Pointer updates the member information and displays a success message.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":445,"author":{"gitId":"QinHaichen12"},"content":" - `Member John Doe\u0027s room updated to 9/10/203.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":446,"author":{"gitId":"QinHaichen12"},"content":"4. The updated member information is displayed in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":447,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":448,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":449,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":450,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":451,"author":{"gitId":"QinHaichen12"},"content":"- **2a. Member not found**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":452,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer displays an error message:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":453,"author":{"gitId":"QinHaichen12"},"content":" - `Error: Member with the given name could not be found.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":454,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":455,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":456,"author":{"gitId":"QinHaichen12"},"content":"- **\\*a. At any time, CCA Leader chooses to cancel the update operation**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":457,"author":{"gitId":"QinHaichen12"},"content":" - \\*a1. Hall Pointer requests confirmation of the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":458,"author":{"gitId":"QinHaichen12"},"content":" - \\*a2. CCA Leader confirms the cancellation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":459,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":460,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":461,"author":{"gitId":"QinHaichen12"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":462,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":463,"author":{"gitId":"QinHaichen12"},"content":"#### Use Case: UC05 - View All Members","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":464,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":465,"author":{"gitId":"QinHaichen12"},"content":"**System**: Hall Pointer App","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":466,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":467,"author":{"gitId":"QinHaichen12"},"content":"**Actor**: CCA Leader","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":468,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":469,"author":{"gitId":"QinHaichen12"},"content":"**Description**: This use case allows a CCA leader to view a list of all members in the system.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":470,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":471,"author":{"gitId":"QinHaichen12"},"content":"**Preconditions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":472,"author":{"gitId":"QinHaichen12"},"content":"None.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":473,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":474,"author":{"gitId":"QinHaichen12"},"content":"**Main Success Scenario (MSS)**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":475,"author":{"gitId":"QinHaichen12"},"content":"1. CCA Leader inputs the `list_members` command.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":476,"author":{"gitId":"QinHaichen12"},"content":"2. Hall Pointer retrieves and displays all members in the GUI.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":477,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":478,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":479,"author":{"gitId":"QinHaichen12"},"content":"**Extensions**:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":480,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":481,"author":{"gitId":"QinHaichen12"},"content":"- **2a. No members found**.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":482,"author":{"gitId":"QinHaichen12"},"content":" - 2a1. Hall Pointer displays an error message:","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":483,"author":{"gitId":"QinHaichen12"},"content":" - `Error: No members found.`","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":484,"author":{"gitId":"QinHaichen12"},"content":" - Use case ends.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":485,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":486,"author":{"gitId":"-"},"content":"### Non-Functional Requirements","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":487,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":488,"author":{"gitId":"-"},"content":"1. Should work on any _mainstream OS_ as long as it has Java `17` or above installed.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":489,"author":{"gitId":"starchypotatocode"},"content":"2. Should be able to hold up to 1000 members without a noticeable sluggishness in performance for typical usage.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":490,"author":{"gitId":"keithxun"},"content":"3. A user with above-average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":491,"author":{"gitId":"keithxun"},"content":"4. The application should respond to user commands within 2 seconds under normal operating conditions.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":492,"author":{"gitId":"keithxun"},"content":"5. The user interface should be intuitive enough for a first-time user to understand basic functionalities without external help.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":493,"author":{"gitId":"keithxun"},"content":"6. While primarily designed for one user, the application should be able to handle up to 1000 members efficiently, with room for future enhancements.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":494,"author":{"gitId":"keithxun"},"content":"7. The application should have a success rate of at least 95% for command executions, ensuring that most user actions are completed successfully without errors.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":495,"author":{"gitId":"keithxun"},"content":"8. Code should be organized and documented to facilitate future updates or modifications.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":496,"author":{"gitId":"keithxun"},"content":"9. The application should run seamlessly across different operating systems without requiring extensive configuration.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":497,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":498,"author":{"gitId":"-"},"content":"### Glossary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":499,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":500,"author":{"gitId":"taggyhan"},"content":"1. **Hall Pointer:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":501,"author":{"gitId":"taggyhan"},"content":" A desktop application used by CCA leaders in NUS Halls to track hall points, manage member participation, attendance, and allocate points. It is optimized for Command Line Interface (CLI) usage but also includes a Graphical User Interface (GUI).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":502,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":503,"author":{"gitId":"taggyhan"},"content":"2. **CLI (Command Line Interface):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":504,"author":{"gitId":"taggyhan"},"content":" A text-based interface where users interact with the application by typing commands, making it efficient for users comfortable with fast typing.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":505,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":506,"author":{"gitId":"taggyhan"},"content":"3. **GUI (Graphical User Interface):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":507,"author":{"gitId":"taggyhan"},"content":" A visual interface that allows users to interact with the application using graphical components like buttons and menus, in addition to CLI commands.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":508,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":509,"author":{"gitId":"taggyhan"},"content":"4. **Member:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":510,"author":{"gitId":"starchypotatocode"},"content":" A participant or member of a CCA (Co-Curricular Activity) in NUS Halls, whose details are tracked in the Hall Pointer system (e.g., name, telegram, points, and attendance).","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":511,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":512,"author":{"gitId":"taggyhan"},"content":"5. **Points Allocation:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":513,"author":{"gitId":"taggyhan"},"content":" The process of awarding hall points to members based on their participation in activities. CCA leaders can customize the criteria for point allocation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":514,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":515,"author":{"gitId":"taggyhan"},"content":"6. **CCA (Co-Curricular Activity):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":516,"author":{"gitId":"taggyhan"},"content":" A club or activity within an NUS Hall that tracks member participation and points. Hall Pointer helps CCA leaders manage their members more efficiently.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":517,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":518,"author":{"gitId":"taggyhan"},"content":"7. **Gradle:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":519,"author":{"gitId":"taggyhan"},"content":" A build automation tool used in Hall Pointer for compiling code, managing dependencies, and running tasks such as testing and creating JAR files.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":520,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":521,"author":{"gitId":"taggyhan"},"content":"8. **JUnit:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":522,"author":{"gitId":"taggyhan"},"content":" A testing framework for Java, used in Hall Pointer to run automated tests on individual units of the system and ensure code correctness.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":523,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":524,"author":{"gitId":"taggyhan"},"content":"9. **ShadowJar:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":525,"author":{"gitId":"taggyhan"},"content":" A Gradle task that generates a fat JAR file, which bundles the application and its dependencies into a single JAR for distribution.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":526,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":527,"author":{"gitId":"taggyhan"},"content":"10. **GitHub Actions:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":528,"author":{"gitId":"taggyhan"},"content":" A Continuous Integration (CI) tool integrated with GitHub to automatically test and build the Hall Pointer application whenever new changes are pushed.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":529,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":530,"author":{"gitId":"taggyhan"},"content":"11. **Codecov:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":531,"author":{"gitId":"taggyhan"},"content":" A tool that tracks code coverage during testing. It helps assess how much of the Hall Pointer code is covered by tests, encouraging improvements to the test suite.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":532,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":533,"author":{"gitId":"taggyhan"},"content":"12. **Fat JAR:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":534,"author":{"gitId":"taggyhan"},"content":" A JAR file that contains the entire application along with all its dependencies, allowing Hall Pointer to run as a standalone application.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":535,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":536,"author":{"gitId":"taggyhan"},"content":"13. **POSIX-compliant OS:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":537,"author":{"gitId":"taggyhan"},"content":" Operating systems like Linux and macOS that adhere to POSIX standards and are compatible with shell scripts used for CI tasks in Hall Pointer.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":538,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":539,"author":{"gitId":"taggyhan"},"content":"14. **Tag:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":540,"author":{"gitId":"taggyhan"},"content":" Labels or categories assigned to members in the Hall Pointer system (e.g., `leader`, `active`, `inactive`). Tags help classify and manage members more easily.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":541,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":542,"author":{"gitId":"taggyhan"},"content":"15. **Undo/Redo Feature:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":543,"author":{"gitId":"taggyhan"},"content":" A proposed feature that allows users to revert or redo changes in Hall Pointer, enabling easy correction of mistakes.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":544,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":545,"author":{"gitId":"taggyhan"},"content":"16. **Versioned AddressBook:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":546,"author":{"gitId":"taggyhan"},"content":" Refers to a version of the Hall Pointer system where the state of member data is saved at specific intervals to allow undo/redo functionality.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":547,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":548,"author":{"gitId":"taggyhan"},"content":"17. **Test Coverage:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":549,"author":{"gitId":"taggyhan"},"content":" A metric that measures how much of the Hall Pointer codebase is covered by tests, indicating the effectiveness and thoroughness of the test suite.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":550,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":551,"author":{"gitId":"taggyhan"},"content":"18. **User Preferences:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":552,"author":{"gitId":"taggyhan"},"content":" Settings such as window size and logging levels that can be customized by users and saved in a configuration file (`config.json`) for Hall Pointer.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":553,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":554,"author":{"gitId":"taggyhan"},"content":"19. **Configuration File (`config.json`):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":555,"author":{"gitId":"taggyhan"},"content":" A JSON file that stores user preferences and application settings for Hall Pointer, including file locations and logging levels.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":556,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":557,"author":{"gitId":"taggyhan"},"content":"20. **Build Automation:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":558,"author":{"gitId":"taggyhan"},"content":" The process of automating the compilation, testing, and packaging of Hall Pointer using Gradle to ensure consistent builds across different environments.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":559,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":560,"author":{"gitId":"taggyhan"},"content":"21. **Continuous Integration (CI):**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":561,"author":{"gitId":"taggyhan"},"content":" A practice used in Hall Pointer, powered by GitHub Actions, where tests and checks are run automatically to verify the integrity of new code changes before merging.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":562,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":563,"author":{"gitId":"taggyhan"},"content":"22. **Unit Test:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":564,"author":{"gitId":"taggyhan"},"content":" A test that targets individual components or methods in the Hall Pointer system to ensure they function correctly in isolation.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":565,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":566,"author":{"gitId":"taggyhan"},"content":"23. **Integration Test:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":567,"author":{"gitId":"taggyhan"},"content":" A test that checks how different components in Hall Pointer interact with each other, ensuring they work together as expected.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":568,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":569,"author":{"gitId":"taggyhan"},"content":"24. **Hybrid Test:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":570,"author":{"gitId":"taggyhan"},"content":" A combination of unit and integration testing that checks both the individual components and their interactions in the Hall Pointer system.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":571,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":572,"author":{"gitId":"taggyhan"},"content":"25. **Command:**\\","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":573,"author":{"gitId":"taggyhan"},"content":" A typed instruction input by the user in the CLI to perform an action in Hall Pointer, such as adding members, editing details, or tracking points (e.g., `add`, `list`, `delete`).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":574,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":575,"author":{"gitId":"-"},"content":"## **Appendix: Instructions for manual testing**","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":576,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":577,"author":{"gitId":"-"},"content":"Given below are instructions to test the app manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":578,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":579,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":580,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":581,"author":{"gitId":"-"},"content":"**Note:** These instructions only provide a starting point for testers to work on;","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":582,"author":{"gitId":"keithxun"},"content":"testers are expected to do more _exploratory_ testing.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":583,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":584,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":585,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":586,"author":{"gitId":"-"},"content":"### Launch and shutdown","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":587,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":588,"author":{"gitId":"-"},"content":"1. Initial launch","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":589,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":590,"author":{"gitId":"-"},"content":" 1. Download the jar file and copy into an empty folder","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":591,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":592,"author":{"gitId":"starchypotatocode"},"content":" 2. Double-click the jar file Expected: Shows the GUI with a set of sample contacts. The window size may not be optimum.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":593,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":594,"author":{"gitId":"starchypotatocode"},"content":"2. Saving window preferences","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":595,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":596,"author":{"gitId":"-"},"content":" 1. Resize the window to an optimum size. Move the window to a different location. Close the window.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":597,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":598,"author":{"gitId":"starchypotatocode"},"content":" 2. Re-launch the app by double-clicking the jar file.\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":599,"author":{"gitId":"-"},"content":" Expected: The most recent window size and location is retained.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":600,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":601,"author":{"gitId":"starchypotatocode"},"content":"3. _{ more test cases …​ }_","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":602,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":603,"author":{"gitId":"starchypotatocode"},"content":"### Deleting a member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":604,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":605,"author":{"gitId":"starchypotatocode"},"content":"1. Deleting a member while all members are being shown","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":606,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":607,"author":{"gitId":"starchypotatocode"},"content":" 1. Prerequisites: List all members using the `list` command. Multiple members in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":608,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":609,"author":{"gitId":"starchypotatocode"},"content":" 2. Test case: `delete 1`\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":610,"author":{"gitId":"-"},"content":" Expected: First contact is deleted from the list. Details of the deleted contact shown in the status message. Timestamp in the status bar is updated.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":611,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":612,"author":{"gitId":"starchypotatocode"},"content":" 3. Test case: `delete 0`\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":613,"author":{"gitId":"starchypotatocode"},"content":" Expected: No member is deleted. Error details shown in the status message. Status bar remains the same.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":614,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":615,"author":{"gitId":"starchypotatocode"},"content":" 4. Other incorrect delete commands to try: `delete`, `delete x`, `...` (where x is larger than the list size)\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":616,"author":{"gitId":"-"},"content":" Expected: Similar to previous.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":617,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":618,"author":{"gitId":"starchypotatocode"},"content":"2. _{ more test cases …​ }_","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":619,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":620,"author":{"gitId":"-"},"content":"### Saving data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":621,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":622,"author":{"gitId":"-"},"content":"1. Dealing with missing/corrupted data files","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":623,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":624,"author":{"gitId":"-"},"content":" 1. _{explain how to simulate a missing/corrupted file, and the expected behavior}_","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":625,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":626,"author":{"gitId":"starchypotatocode"},"content":"2. _{ more test cases …​ }_","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"yuvrajaryan":1,"taggyhan":72,"QinHaichen12":149,"starchypotatocode":31,"-":288,"keithxun":85}},{"path":"docs/UserGuide.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" title: \"User Guide\"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" pageNav: 3","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"# HallPointer User Guide","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"AddressBook Level 3 (AB3) is a **desktop app for managing contacts, optimized for use via a Line Interface** (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB3 can get your contact management tasks done faster than traditional GUI apps.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c!-- * Table of Contents --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003cpage-nav-print /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"## Quick start","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"1. Ensure you have Java `17` or above installed in your Computer.","lastModifiedDate":"2024-07-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"1. Download the latest `.jar` file from [here](https://ay2425s1-cs2103t-w14-3.github.io/releases).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"1. Copy the file to the folder you want to use as the _home folder_ for your AddressBook.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"1. Open a command terminal, `cd` into the folder you put the jar file in, and use the `java -jar hallpointer.jar` command to run the application.\u003cbr\u003e","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.\u003cbr\u003e","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" ![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"1. Type the command in the command box and press Enter to execute it. e.g. typing **`help`** and pressing Enter will open the help window.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Some example commands you can try:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * `list` : Lists all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" * `add n/John Doe tg/98765432 r/John street, block 123, #01-01` : Adds a contact named `John Doe` to the Address Book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * `delete 3` : Deletes the 3rd contact shown in the current list.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * `clear` : Deletes all contacts.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * `exit` : Exits the app.","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"1. Refer to the [Features](#features) below for details of each command.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"## Features","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"info\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"**Notes about the command format:**\u003cbr\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"* Words in `UPPER_CASE` are the parameters to be supplied by the user.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"* Items in square brackets are optional.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"* Items with `…`​ after them can be used multiple times including zero times.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" e.g. `[t/TAG]…​` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"* Parameters can be in any order.\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" e.g. if the command specifies `n/NAME tg/TELEGRAM`, `tg/TELEGRAM n/NAME` is also acceptable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.\u003cbr\u003e","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" e.g. if the command specifies `help 123`, it will be interpreted as `help`.","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"* If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.","lastModifiedDate":"2023-06-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"### Viewing help : `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"Shows a message explaning how to access the help page.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"![help message](images/helpMessage.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"Format: `help`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":"### Adding a member: `add`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":"Adds a member to the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":"Format: `add n/NAME tg/TELEGRAM r/ROOM [t/TAG]…​`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"tip\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":"**Tip:** A member can have any number of tags (including 0)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":"* `add n/John Doe tg/98765432 r/John street, block 123, #01-01`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":"* `add n/Betsy Crowe t/friend r/Newgate Prison tg/1234567 t/criminal`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":"### Listing all members : `list`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":"Shows a list of all members in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"Format: `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":"### Editing a member : `edit`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"starchypotatocode"},"content":"Edits an existing member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":"Format: `edit INDEX [n/NAME] [tg/TELEGRAM] [r/ROOM] [t/TAG]…​`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":"* Edits the member at the specified `INDEX`. The index refers to the index number shown in the displayed member list. The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"* At least one of the optional fields must be provided.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"* Existing values will be updated to the input values.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":"* When editing tags, the existing tags of the member will be removed i.e adding of tags is not cumulative.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":"* You can remove all the member’s tags by typing `t/` without","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" specifying any tags after it.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":"* `edit 1 tg/91234567 n/Johnson Doe` Edits the telegram and name of the 1st member to be `91234567` and `Johnson Doe` respectively.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":"* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd member to be `Betsy Crower` and clears all existing tags.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":"### Locating members by name: `find`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":"Finds members whose names contain any of the given keywords.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"Format: `find KEYWORD [MORE_KEYWORDS]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"* The search is case-insensitive. e.g `hans` will match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"* Only the name is searched.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"* Only full words will be matched e.g. `Han` will not match `Hans`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"starchypotatocode"},"content":"* Members matching at least one keyword will be returned (i.e. `OR` search).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"* `find John` returns `john` and `John Doe`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":"* `find alex david` returns `Alex Yeoh`, `David Li`\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" ![result for \u0027find alex david\u0027](images/findAlexDavidResult.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"starchypotatocode"},"content":"### Deleting a member : `delete`","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"starchypotatocode"},"content":"Deletes the specified member from the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"Format: `delete INDEX`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"starchypotatocode"},"content":"* Deletes the member at the specified `INDEX`.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"starchypotatocode"},"content":"* The index refers to the index number shown in the displayed member list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"* The index **must be a positive integer** 1, 2, 3, …​","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"Examples:","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":"* `list` followed by `delete 2` deletes the 2nd member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":"* `find Betsy` followed by `delete 1` deletes the 1st member in the results of the `find` command.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"### Clearing all entries : `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"Clears all entries from the address book.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"Format: `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"### Exiting the program : `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"Exits the program.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"Format: `exit`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"### Saving the data","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"AddressBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"### Editing the data file","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"AddressBook data are saved automatically as a JSON file `[JAR file location]/data/addressbook.json`. Advanced users are welcome to update data directly by editing that data file.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"\u003cbox type\u003d\"warning\" seamless\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"**Caution:**","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.\u003cbr\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"Furthermore, certain edits can cause the AddressBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":"\u003c/box\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"### Archiving data files `[coming in v2.0]`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":"_Details coming soon ..._","lastModifiedDate":"2021-02-04","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"## FAQ","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":"**Q**: How do I transfer my data to another Computer?\u003cbr\u003e","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"## Known issues","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"1. **When using multiple screens**, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the `preferences.json` file created by the application before running the application again.","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"2. **If you minimize the Help Window** and then run the `help` command (or use the `Help` menu, or the keyboard shortcut `F1`) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.","lastModifiedDate":"2024-07-30","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"--------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":"## Command summary","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"Action | Format, Examples","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"-----------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"starchypotatocode"},"content":"**Add** | `add n/NAME tg/TELEGRAM r/ROOM [t/TAG]…​` \u003cbr\u003e e.g., `add n/James Ho tg/22224444 r/123, Clementi Rd, 1234665 t/friend t/colleague`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":"**Clear** | `clear`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":"**Delete** | `delete INDEX`\u003cbr\u003e e.g., `delete 3`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"starchypotatocode"},"content":"**Edit** | `edit INDEX [n/NAME] [tg/TELEGRAM] [r/ROOM] [t/TAG]…​`\u003cbr\u003e e.g.,`edit 2 n/James Lee tg/99998888`","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":"**Find** | `find KEYWORD [MORE_KEYWORDS]`\u003cbr\u003e e.g., `find James Jake`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"**List** | `list`","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"**Help** | `help`","lastModifiedDate":"2020-05-23","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":31,"-":174}},{"path":"docs/_markbind/layouts/default.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003chead-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" \u003clink rel\u003d\"stylesheet\" href\u003d\"{{baseUrl}}/stylesheets/main.css\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c/head-bottom\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cheader sticky\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" \u003cnavbar type\u003d\"dark\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" \u003ca slot\u003d\"brand\" href\u003d\"{{baseUrl}}/index.html\" title\u003d\"Home\" class\u003d\"navbar-brand\"\u003eHallPointer\u003c/a\u003e","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/index.html\" class\u003d\"nav-link\"\u003eHome\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/UserGuide.html\" class\u003d\"nav-link\"\u003eUser Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/DeveloperGuide.html\" class\u003d\"nav-link\"\u003eDeveloper Guide\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" \u003cli\u003e\u003ca href\u003d\"{{baseUrl}}/AboutUs.html\" class\u003d\"nav-link\"\u003eAbout Us\u003c/a\u003e\u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" \u003cli\u003e\u003ca href\u003d\"https://github.com/ay2425s1-cs2103t-w14-3/tp\" target\u003d\"_blank\" class\u003d\"nav-link\"\u003e\u003cmd\u003e:fab-github:\u003c/md\u003e\u003c/a\u003e","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cli slot\u003d\"right\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cform class\u003d\"navbar-form\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003csearchbar :data\u003d\"searchData\" placeholder\u003d\"Search\" :on-hit\u003d\"searchCallback\" menu-align-right\u003e\u003c/searchbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/form\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003c/li\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/navbar\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"\u003c/header\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"\u003cdiv id\u003d\"flex-body\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"site-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"site-nav-top\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"fw-bold mb-2\" style\u003d\"font-size: 1.25rem;\"\u003eSite Map\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003csite-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* [Home]({{ baseUrl }}/index.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"* [User Guide]({{ baseUrl }}/UserGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * [Quick Start]({{ baseUrl }}/UserGuide.html#quick-start)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * [Features]({{ baseUrl }}/UserGuide.html#features)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * [FAQ]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * [Command Summary]({{ baseUrl }}/UserGuide.html#faq)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"* [Developer Guide]({{ baseUrl }}/DeveloperGuide.html) :expanded:","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * [Acknowledgements]({{ baseUrl }}/DeveloperGuide.html#acknowledgements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * [Setting Up]({{ baseUrl }}/DeveloperGuide.html#setting-up-getting-started)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * [Design]({{ baseUrl }}/DeveloperGuide.html#design)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * [Implementation]({{ baseUrl }}/DeveloperGuide.html#implementation)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * [Documentation, logging, testing, configuration, dev-ops]({{ baseUrl }}/DeveloperGuide.html#documentation-logging-testing-configuration-dev-ops)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * [Appendix: Requirements]({{ baseUrl }}/DeveloperGuide.html#appendix-requirements)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * [Appendix: Instructions for manual testing]({{ baseUrl }}/DeveloperGuide.html#appendix-instructions-for-manual-testing)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"* Tutorials","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * [Tracing code]({{ baseUrl }}/tutorials/TracingCode.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" * [Adding a command]({{ baseUrl }}/tutorials/AddRemark.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * [Removing Fields]({{ baseUrl }}/tutorials/RemovingFields.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"* [About Us]({{ baseUrl }}/AboutUs.html)","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" \u003c/site-nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003cdiv id\u003d\"content-wrapper\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" {{ content }}","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" \u003cnav id\u003d\"page-nav\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"nav-component slim-scroll\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003cpage-nav /\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/nav\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" \u003cscroll-top-button\u003e\u003c/scroll-top-button\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"\u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"\u003cfooter\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" \u003c!-- Support MarkBind by including a link to us on your landing page! --\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" \u003cdiv class\u003d\"text-center\"\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" \u003csmall\u003e[\u003cmd\u003e**Powered by**\u003c/md\u003e \u003cimg src\u003d\"https://markbind.org/favicon.ico\" width\u003d\"30\"\u003e {{MarkBind}}, generated on {{timestamp}}]\u003c/small\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" \u003c/div\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"\u003c/footer\u003e","lastModifiedDate":"2023-09-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":66}},{"path":"docs/diagrams/ArchitectureSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"Actor User as user USER_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":UI\" as ui UI_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":Logic\" as logic LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \":Model\" as model MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"Participant \":Storage\" as storage STORAGE_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"user -[USER_COLOR]\u003e ui : \"delete 1\"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"activate ui UI_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"ui -[UI_COLOR]\u003e logic : execute(\"delete 1\")","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"activate logic LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"logic -[LOGIC_COLOR]\u003e model : deleteMember(p)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate model MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"model -[MODEL_COLOR]-\u003e logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"deactivate model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"logic -[LOGIC_COLOR]\u003e storage : saveAddressBook(addressBook)","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"storage -[STORAGE_COLOR]\u003e storage : Save to file","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"activate storage STORAGE_COLOR_T1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e storage","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"storage --[STORAGE_COLOR]\u003e logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"deactivate storage","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"logic --[LOGIC_COLOR]\u003e ui","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"deactivate logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"ui--[UI_COLOR]\u003e user","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate ui","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":38}},{"path":"docs/diagrams/BetterModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"AddressBook *-right-\u003e \"1\" UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook *-right-\u003e \"1\" UniqueTagList","lastModifiedDate":"2019-07-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"UniqueTagList -[hidden]down- UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"UniqueTagList -[hidden]down- UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"UniqueTagList -right-\u003e \"*\" Tag","lastModifiedDate":"2023-01-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"UniqueMemberList -right-\u003e Member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"Member -up-\u003e \"*\" Tag","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Name","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":8,"-":12}},{"path":"docs/diagrams/DeleteSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"box Logic LOGIC_COLOR_T1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"participant \":LogicManager\" as LogicManager LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"participant \":AddressBookParser\" as AddressBookParser LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"participant \":DeleteCommandParser\" as DeleteCommandParser LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"participant \"d:DeleteCommand\" as DeleteCommand LOGIC_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"participant \"r:CommandResult\" as CommandResult LOGIC_COLOR","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"box Model MODEL_COLOR_T1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"participant \"m:Model\" as Model MODEL_COLOR","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"end box","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"[-\u003e LogicManager : execute(\"delete 1\")","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"activate LogicManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"LogicManager -\u003e AddressBookParser : parseCommand(\"delete 1\")","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"activate AddressBookParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"create DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"AddressBookParser -\u003e DeleteCommandParser : parse(\"1\")","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"activate DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"create DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"DeleteCommandParser -\u003e DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e DeleteCommandParser :","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"DeleteCommandParser --\u003e AddressBookParser : d","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"deactivate DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"\u0027Hidden arrow to position the destroy marker below the end of the activation bar.","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"DeleteCommandParser -[hidden]-\u003e AddressBookParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"destroy DeleteCommandParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"AddressBookParser --\u003e LogicManager : d","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"deactivate AddressBookParser","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"LogicManager -\u003e DeleteCommand : execute(m)","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"activate DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":"DeleteCommand -\u003e Model : deleteMember(1)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"activate Model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"Model --\u003e DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"deactivate Model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"create CommandResult","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"DeleteCommand -\u003e CommandResult","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"activate CommandResult","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"CommandResult --\u003e DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"deactivate CommandResult","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"DeleteCommand --\u003e LogicManager : r","lastModifiedDate":"2024-02-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"deactivate DeleteCommand","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"[\u003c--LogicManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"deactivate LogicManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":69}},{"path":"docs/diagrams/ModelClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor MODEL_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"Package Model as ModelPackage \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyAddressBook\" as ReadOnlyAddressBook","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nReadOnlyUserPrefs\" as ReadOnlyUserPrefs","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nModel\" as Model","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class AddressBook","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class ModelManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class UserPrefs","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"Class UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"Class Member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class Address","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class Name","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"Class Telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class Tag","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class I #FFFFFF","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"AddressBook .up.|\u003e ReadOnlyAddressBook","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"ModelManager .up.|\u003e Model","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"Model .right.\u003e ReadOnlyUserPrefs","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"Model .left.\u003e ReadOnlyAddressBook","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"ModelManager -left-\u003e \"1\" AddressBook","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"ModelManager -right-\u003e \"1\" UserPrefs","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"UserPrefs .up.|\u003e ReadOnlyUserPrefs","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":"AddressBook *--\u003e \"1\" UniqueMemberList","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"UniqueMemberList --\u003e \"~* all\" Member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Name","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e Address","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":"Member *--\u003e \"*\" Tag","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":"Member -[hidden]up--\u003e I","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":"UniqueMemberList -[hidden]right-\u003e I","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":"Name -[hidden]right-\u003e Telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":"Telegram -[hidden]right-\u003e Address","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":"ModelManager --\u003e \"~* filtered\" Member","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":14,"-":37}},{"path":"docs/diagrams/StorageClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor STORAGE_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor STORAGE_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"package Storage as StoragePackage {","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"package \"UserPrefs Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUserPrefsStorage\" as UserPrefsStorage","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class JsonUserPrefsStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nStorage\" as Storage","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"Class StorageManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"package \"AddressBook Storage\" #F4F6F6{","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nAddressBookStorage\" as AddressBookStorage","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"Class JsonAddressBookStorage","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"Class JsonSerializableAddressBook","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"Class JsonAdaptedMember","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"Class JsonAdaptedTag","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Storage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"StorageManager .up.|\u003e Storage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" UserPrefsStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"StorageManager -up-\u003e \"1\" AddressBookStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"Storage -left-|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"Storage -right-|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"JsonUserPrefsStorage .up.|\u003e UserPrefsStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"JsonAddressBookStorage .up.|\u003e AddressBookStorage","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"JsonAddressBookStorage ..\u003e JsonSerializableAddressBook","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"JsonSerializableAddressBook --\u003e \"*\" JsonAdaptedMember","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"JsonAdaptedMember --\u003e \"*\" JsonAdaptedTag","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2021-03-31","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":40}},{"path":"docs/diagrams/UiClassDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include style.puml","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam arrowThickness 1.1","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"skinparam arrowColor UI_COLOR_T4","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"skinparam classBackgroundColor UI_COLOR","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"package UI \u003c\u003cRectangle\u003e\u003e{","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"Class \"\u003c\u003cinterface\u003e\u003e\\nUi\" as Ui","lastModifiedDate":"2022-01-03","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"Class \"{abstract}\\nUiPart\" as UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Class UiManager","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"Class MainWindow","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"Class HelpWindow","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"Class ResultDisplay","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"Class MemberListPanel","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"Class MemberCard","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"Class StatusBarFooter","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"Class CommandBox","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"package Model \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"Class HiddenModel #FFFFFF","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"package Logic \u003c\u003cRectangle\u003e\u003e {","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"Class HiddenLogic #FFFFFF","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"Class HiddenOutside #FFFFFF","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"HiddenOutside ..\u003e Ui","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"UiManager .left.|\u003e Ui","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"UiManager -down-\u003e \"1\" MainWindow","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" CommandBox","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" ResultDisplay","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":"MainWindow *-down-\u003e \"1\" MemberListPanel","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"MainWindow *-down-\u003e \"1\" StatusBarFooter","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"MainWindow --\u003e \"0..1\" HelpWindow","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"MemberListPanel -down-\u003e \"*\" MemberCard","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"MainWindow -left-|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"ResultDisplay --|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"CommandBox --|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":"MemberListPanel --|\u003e UiPart","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":"MemberCard --|\u003e UiPart","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"StatusBarFooter --|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"HelpWindow --|\u003e UiPart","lastModifiedDate":"2021-07-31","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":"MemberCard ..\u003e Model","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"UiManager -right-\u003e Logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"MainWindow -left-\u003e Logic","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":"MemberListPanel -[hidden]left- HelpWindow","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"HelpWindow -[hidden]left- CommandBox","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"CommandBox -[hidden]left- ResultDisplay","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"ResultDisplay -[hidden]left- StatusBarFooter","lastModifiedDate":"2019-07-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"MainWindow -[hidden]-|\u003e UiPart","lastModifiedDate":"2019-07-03","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-07-03","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":8,"-":52}},{"path":"docs/diagrams/tracing/LogicSequenceDiagram.puml","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@startuml","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"!include ../style.puml","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"skinparam ArrowFontStyle plain","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"Participant \":LogicManager\" as logic LOGIC_COLOR","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"Participant \":AddressBookParser\" as abp LOGIC_COLOR","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"Participant \":EditCommandParser\" as ecp LOGIC_COLOR","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"Participant \"command:EditCommand\" as ec LOGIC_COLOR","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"[-\u003e logic : execute","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"activate logic","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"logic -\u003e abp ++: parseCommand(commandText)","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"create ecp","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"abp -\u003e ecp","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"abp -\u003e ecp ++: parse(arguments)","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"create ec","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"taggyhan"},"content":"ecp -\u003e ec ++: index, updateMemberDescriptor","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"ec --\u003e ecp --","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"ecp --\u003e abp --: command","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"abp --\u003e logic --: command","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-06-17","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"@enduml","lastModifiedDate":"2019-06-17","isFullCredit":false}],"authorContributionMap":{"taggyhan":1,"-":21}},{"path":"docs/index.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"taggyhan"},"content":" title: \"HallPointer\"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"# HallPointer","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-09-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"[![CI Status](https://github.com/AY2425S1-CS2103T-W14-3/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2425S1-CS2103T-W14-3/tp/actions/workflows/gradle.yml)","lastModifiedDate":"2024-10-02","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"[![codecov](https://codecov.io/gh/ay2425s1-cs2103t-w14-3/tp/branch/master/graph/badge.svg)](https://codecov.io/gh/ay2425s1-cs2103t-w14-3/tp)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"![Ui](images/Ui.png)","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"taggyhan"},"content":"**HallPointer** is a desktop application specifically designed for CCA (Co-Curricular Activity) leaders in NUS Halls to efficiently manage hall points and member participation. The application allows users to track attendance, allocate points, and maintain member details. While HallPointer features a GUI, most of the interactions are optimized for use with a Command Line Interface (CLI).","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"taggyhan"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"taggyhan"},"content":"### Key Features","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"taggyhan"},"content":"- **Manage Members:** Add, edit, delete, and view CCA members easily.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"taggyhan"},"content":"- **Track Attendance:** Record participation in events and track members with low attendance.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":"- **Allocate Points:** Customize and track hall points based on member participation in activities.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":"- **Efficient CLI-based Commands:** Perform tasks quickly using CLI commands for users familiar with typing.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"taggyhan"},"content":"- **Undo/Redo Support:** A proposed feature for reverting changes to ensure accurate management.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"taggyhan"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"taggyhan"},"content":"### Getting Started","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"taggyhan"},"content":"- If you are a user interested in using **HallPointer**, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.md#quick-start) for instructions on how to set up and begin using the application.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":"- If you are interested in contributing to or developing **HallPointer**, the [**Developer Guide**](DeveloperGuide.md) provides detailed technical information and instructions to help you get started.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"taggyhan"},"content":"---","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"taggyhan"},"content":"### Acknowledgements","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"taggyhan"},"content":"- **Libraries used:**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"taggyhan"},"content":" - [JavaFX](https://openjfx.io/) - for building the graphical user interface.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"taggyhan"},"content":" - [Jackson](https://github.com/FasterXML/jackson) - for JSON processing.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"taggyhan"},"content":" - [JUnit5](https://github.com/junit-team/junit5) - for testing the application.","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"taggyhan":25,"starchypotatocode":3,"-":12}},{"path":"docs/team/keithxun.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"keithxun"},"content":"# Keith Ong","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"keithxun"},"content":"- **Phone**: +65 87202723","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"keithxun"},"content":"- **Email**: [keithonghx@gmail.com](mailto:keithonghx@gmail.com)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"keithxun"},"content":"- **GitHub**: [https://github.com/keithxun](https://github.com/keithxun)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"keithxun"},"content":"## Education","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":"**National University of Singapore**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":"_Bachelor of Computing_ (Aug 2023 – Aug 2027)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":"**GPA**: 4.8","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"keithxun"},"content":"## Achievements","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"keithxun"},"content":"- **Dean\u0027s List** - AY 23/24 Sem 1","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"keithxun"},"content":"- **What The Hack Hackathon** – Developed a Green Web Application to Reduce Carbon Footprint","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"keithxun"},"content":"- **RHdev Hackathon** – Created a Web \u0026 Telegram Application for Canvas Notifications","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"keithxun"},"content":"- **IRC-SET 2020 Publication** – Precision Ellipsometry System under A\\*STAR","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"keithxun"},"content":"## Work Experience","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"keithxun"},"content":"### Process Automation Intern","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"keithxun"},"content":"_CPF Board, Singapore_ (May 2024 – Aug 2024)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":"- Developed a **UIPath script** incorporating **computer vision** and **OCR technologies** to automate access applications, saving over 100 hours annually.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"keithxun"},"content":"- Implemented a category sorting system using the **Mistral Model** and **LLMs**, reducing misclassification by 40%.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"keithxun"},"content":"- Led project management for a **gamification app** for agents, overseeing requirements gathering and timeline management.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"keithxun"},"content":"- **Tech Stack**: UIPath, Python, OCR, Computer Vision, LLMs, Microsoft PowerApps","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"keithxun"},"content":"### Software Engineer (SWE), Project Sabai","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":"_YYL SOM, Singapore \u0026 Cambodia_ (Dec 2023 - Present)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":"- Maintained and enhanced a **biometric web application** for clinical use with a team of 21.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"keithxun"},"content":"- Refactored codebase to improve performance in poor internet conditions in Cambodia and ensure future scalability.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"keithxun"},"content":"- Revamped the **user interface** to improve user experience.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"keithxun"},"content":"- **Tech Stack**: React, Next.js, Tailwind CSS, Django, PostgreSQL, Vercel, New Relic, Auth0","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":"### Research Intern","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":"*A*STAR, Singapore\\* (Jan 2019 - Feb 2020)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":"- Engineered a portable **precision ellipsometry system** for use with liquids, under the guidance of Dr. Nikolai Yakovlev.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"content":"## Publications and Presentations","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"keithxun"},"content":"- **IRC-SET 2020**: Published and presented on the **Precision Ellipsometry System**, designed for portability and use with liquid samples in field settings.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":"**[GitHub](https://github.com/keithxun)** | **[Email](mailto:keithonghx@gmail.com)** | **Phone**: +65 87202723","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"keithxun":60}},{"path":"docs/team/qinhaichen12.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"QinHaichen12"},"content":"# Qin Haichen","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"QinHaichen12"},"content":"- **HP**: 93691698","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"QinHaichen12"},"content":"- **Email**: [haichensurfs@gmail.com](mailto:haichensurfs@gmail.com)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"QinHaichen12"},"content":"- **LinkedIn profile**: [LinkedIn Profile](#)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"QinHaichen12"},"content":"- **Availability**: Available for internship Jan – Jun and May - Aug","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"QinHaichen12"},"content":"## Education","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"QinHaichen12"},"content":"### National University of Singapore","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"QinHaichen12"},"content":"**Aug 2023 - Jul 2027**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"QinHaichen12"},"content":"- Bachelor of Computing in Computer Science","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"QinHaichen12"},"content":" - Current GPA: 5.00/5.00 (Highest Distinction)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"QinHaichen12"},"content":" - Top scorer for Data Structures and Algorithms and Programming Methodology II","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"QinHaichen12"},"content":" - Obtained top 8 in a robotics contest organized by the School of Computing","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"QinHaichen12"},"content":"- Bachelor of Science in Mathematics","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"QinHaichen12"},"content":" - Current GPA: 5.00/5.00 (Highest Distinction)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"QinHaichen12"},"content":" - Obtained highest grade (A+) in Calculus, Linear Algebra, and Probability","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"QinHaichen12"},"content":"### NUS High School of Mathematics and Science","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"QinHaichen12"},"content":"**Jan 2015 - Dec 2020**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"QinHaichen12"},"content":"- NUS High School Diploma with Honours in Chemistry, Physics, and Mathematics","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"QinHaichen12"},"content":" - Graduated with a Cumulative Average Point (CAP) of 4.8/5.0","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"QinHaichen12"},"content":" - Part of the National Team for Physics Olympiad","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"QinHaichen12"},"content":" - Gold Medal for Singapore Physics Olympiad","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"QinHaichen12"},"content":" - Gold Medal for Singapore Maths Olympiad","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"QinHaichen12"},"content":"## Projects","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"QinHaichen12"},"content":"- Collaborated with a team of four to create a mobile app with Unity engine and C# incorporating AR functionalities within 3 days and trained a Machine Learning model using YOLO_v8 for animal image recognition leveraging Python and TensorFlow.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"QinHaichen12"},"content":"- Deployed a full-stack web application on Vercel platform that enables users to create and participate in prediction challenges using Next.js for frontend and Supabase for backend database management.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"QinHaichen12"},"content":"## Technical Skills","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"QinHaichen12"},"content":"- **Languages**: Java, Python, Javascript, PostgreSQL, C#, C++","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"QinHaichen12"},"content":"- **Frameworks**: React, Next.js","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"QinHaichen12"},"content":"## Work Experience","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"QinHaichen12"},"content":"### Part Time Tutor (Self-employed)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"QinHaichen12"},"content":"**Jan 2023 - Aug 2023**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"QinHaichen12"},"content":"- Tutored multiple students for physics and mathematics at Junior College level","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"QinHaichen12"},"content":"### Head Depot Clerk (Singapore Armed Forces)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"QinHaichen12"},"content":"**Jan 2021 - Jan 2023**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"QinHaichen12"},"content":"- Managed administrative processes for a depot with more than 70 people","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"QinHaichen12"},"content":"- Engineered an automated duty planning system using VBA and Power Query that streamlined scheduling for 70+ personnel, resulting in time savings of over 15 hours per week on administrative tasks.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"QinHaichen12"},"content":"### Research Intern (Cryowerx)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"QinHaichen12"},"content":"**Apr 2019 - Oct 2019**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"QinHaichen12"},"content":"- Developed innovative solutions to mitigate RFID signal detuning caused by medium placement or material obstructions.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"QinHaichen12"},"content":"- Presented the project at Singapore Science Engineering Fair 2020, earning a Merit Award for its effectiveness in addressing complex engineering challenges related to RFID technology.","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"QinHaichen12"},"content":"## Community Involvement","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"QinHaichen12"},"content":"","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"QinHaichen12"},"content":"### Trained Repair Coach (Repair Kopitiam Singapore)","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"QinHaichen12"},"content":"**Apr 2023 - Present**","lastModifiedDate":"2024-10-01","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"QinHaichen12"},"content":"- Trained to repair common electrical and mechanical devices","lastModifiedDate":"2024-10-01","isFullCredit":false}],"authorContributionMap":{"QinHaichen12":58,"keithxun":12}},{"path":"docs/team/taggyhan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"taggyhan"},"content":"* * * * *","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"taggyhan"},"content":"**Tan Tag Han**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"taggyhan"},"content":"- **Email**: e0516145@u.nus.edu","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"taggyhan"},"content":"- **Phone**: 82013355","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"taggyhan"},"content":"- **LinkedIn**: [Tag Han Tan](https://www.linkedin.com/in/tag-han-tan/)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"taggyhan"},"content":"### Education","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"taggyhan"},"content":"- **National University of Singapore (2023 - Present)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"taggyhan"},"content":" - Bachelor of Computing, Computer Science","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":"- **NUS High School of Mathematics and Science (2015 -- 2020)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"taggyhan"},"content":" - High Distinction (Majors with Honors in Chemistry; Majors in Math, Physics, Biology)","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"taggyhan"},"content":" - Societies: Track \u0026 Field Team; Drama Club; Boarding School Leader; Chemistry Olympiad Team","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":"### Work Experience","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"taggyhan"},"content":"- **Institute of High-Performance Computing (Nov 2022 - Jun 2023)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"taggyhan"},"content":" - Machine Learning Research Intern","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"taggyhan"},"content":" - Developed loss functions in Generative Adversarial Networks for image-to-image translation networks.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"taggyhan"},"content":" - Improved image quality metrics by 15%.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"taggyhan"},"content":"- **Bioinformatics Institute (Jun 2019 - Mar 2020)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"taggyhan"},"content":" - Bioinformatics Research Intern","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":" - Performed molecular dynamics tasks for protein-protein binding interactions in AMBER 14.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":" - Bronze Medal at Singapore Science and Engineering Fair and A*STAR Talent Search (Top 50 in Singapore).","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"taggyhan"},"content":"### Clubs \u0026 Societies","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"taggyhan"},"content":"- **NUS Fintech Society (Aug 2023 - Present)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"taggyhan"},"content":"- **Google Developers Student Club (GDSC) NUS (Aug 2023 - Present)**","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"taggyhan":38}},{"path":"docs/team/yuvrajaryan.md","fileType":"docs","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" layout: default.md","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"yuvrajaryan"},"content":" title: \"Yuvraj Aryan Singh\u0027s Project Portfolio Page\"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"---","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"### Project: AddressBook Level 3","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"AddressBook - Level 3 is a desktop address book application used for teaching Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"Given below are my contributions to the project.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"* **New Feature**: Added the ability to undo/redo previous commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * What it does: allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Credits: *{mention here if you reused any code/ideas from elsewhere or if a third-party library is heavily used in the feature so that a reader can make a more accurate judgement of how much effort went into the feature}*","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"* **New Feature**: Added a history command that allows the user to navigate to previous commands using up/down keys.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"* **Code contributed**: [RepoSense link]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"* **Project management**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Managed releases `v1.3` - `v1.5rc` (3 releases) on GitHub","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"* **Enhancements to existing features**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Updated the GUI color scheme (Pull requests [\\#33](), [\\#34]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Wrote additional tests for existing features to increase coverage from 88% to 92% (Pull requests [\\#36](), [\\#38]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"* **Documentation**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * User Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Added documentation for the features `delete` and `find` [\\#72]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" * Did cosmetic tweaks to existing documentation of features `clear`, `exit`: [\\#74]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Developer Guide:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Added implementation details of the `delete` feature.","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"* **Community**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * PRs reviewed (with non-trivial review comments): [\\#12](), [\\#32](), [\\#19](), [\\#42]()","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Contributed to forum discussions (examples: [1](), [2](), [3](), [4]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Reported bugs and suggestions for other teams in the class (examples: [1](), [2](), [3]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * Some parts of the history feature I added was adopted by several other class mates ([1](), [2]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"* **Tools**:","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Integrated a third party library (Natty) to the project ([\\#42]())","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Integrated a new Github plugin (CircleCI) to the team repo","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"* _{you can add/remove categories in the list above}_","lastModifiedDate":"2024-09-30","isFullCredit":false}],"authorContributionMap":{"yuvrajaryan":1,"-":45}},{"path":"src/main/java/hallpointer/address/MainApp.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.Config;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.Version;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ConfigUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.StringUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.LogicManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import hallpointer.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.AddressBookStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.Storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.StorageManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.UserPrefsStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"import hallpointer.address.ui.Ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import hallpointer.address.ui.UiManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import javafx.application.Application;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Runs the application.","lastModifiedDate":"2019-02-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"public class MainApp extends Application {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" public static final Version VERSION \u003d new Version(1, 0, 0, true);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(MainApp.class);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" protected Ui ui;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" protected Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" protected Storage storage;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" protected Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" protected Config config;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void init() throws Exception {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d[ Initializing AddressBook ]\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" super.init();","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" AppParameters appParameters \u003d AppParameters.parse(getParameters());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" config \u003d initConfig(appParameters.getConfigPath());","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" initLogging(config);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" UserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(config.getUserPrefsFilePath());","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d initPrefs(userPrefsStorage);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" AddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(userPrefs.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" model \u003d initModelManager(storage, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" ui \u003d new UiManager(logic);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * Returns a {@code ModelManager} with the data from {@code storage}\u0027s address book and {@code userPrefs}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * The data from the sample address book will be used instead if {@code storage}\u0027s address book is not found,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * or an empty address book will be used instead if errors occur when reading {@code storage}\u0027s address book.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" private Model initModelManager(Storage storage, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" logger.info(\"Using data file : \" + storage.getAddressBookFilePath());","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" Optional\u003cReadOnlyAddressBook\u003e addressBookOptional;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook initialData;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" addressBookOptional \u003d storage.readAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" if (!addressBookOptional.isPresent()) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" logger.info(\"Creating a new data file \" + storage.getAddressBookFilePath()","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" + \" populated with a sample AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" initialData \u003d addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" logger.warning(\"Data file at \" + storage.getAddressBookFilePath() + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" + \" Will be starting with an empty AddressBook.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" initialData \u003d new AddressBook();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" return new ModelManager(initialData, userPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void initLogging(Config config) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" LogsCenter.init(config);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" * Returns a {@code Config} using the file at {@code configFilePath}. \u003cbr\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" * The default file path {@code Config#DEFAULT_CONFIG_FILE} will be used instead","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" * if {@code configFilePath} is null.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" protected Config initConfig(Path configFilePath) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" Config initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Path configFilePathUsed;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d Config.DEFAULT_CONFIG_FILE;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" if (configFilePath !\u003d null) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" logger.info(\"Custom Config file specified \" + configFilePath);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" configFilePathUsed \u003d configFilePath;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" logger.info(\"Using config file : \" + configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" Optional\u003cConfig\u003e configOptional \u003d ConfigUtil.readConfig(configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" if (!configOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" logger.info(\"Creating new config file \" + configFilePathUsed);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" initializedConfig \u003d configOptional.orElse(new Config());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" logger.warning(\"Config file at \" + configFilePathUsed + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" + \" Using default config properties.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" initializedConfig \u003d new Config();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" //Update config file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" ConfigUtil.saveConfig(initializedConfig, configFilePathUsed);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" return initializedConfig;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * Returns a {@code UserPrefs} using the file at {@code storage}\u0027s user prefs file path,","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" * or a new {@code UserPrefs} with default configuration if errors occur when","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * reading from the file.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" protected UserPrefs initPrefs(UserPrefsStorage storage) {","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" Path prefsFilePath \u003d storage.getUserPrefsFilePath();","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" logger.info(\"Using preference file : \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" UserPrefs initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" Optional\u003cUserPrefs\u003e prefsOptional \u003d storage.readUserPrefs();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" if (!prefsOptional.isPresent()) {","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" logger.info(\"Creating new preference file \" + prefsFilePath);","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-01-03","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" initializedPrefs \u003d prefsOptional.orElse(new UserPrefs());","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" } catch (DataLoadingException e) {","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" logger.warning(\"Preference file at \" + prefsFilePath + \" could not be loaded.\"","lastModifiedDate":"2023-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" + \" Using default preferences.\");","lastModifiedDate":"2023-05-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" initializedPrefs \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" //Update prefs file in case it was missing to begin with or there are new/unused fields","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(initializedPrefs);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" logger.warning(\"Failed to save config file : \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" return initializedPrefs;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" public void start(Stage primaryStage) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" logger.info(\"Starting AddressBook \" + MainApp.VERSION);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" ui.start(primaryStage);","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" public void stop() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" logger.info(\"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d [ Stopping AddressBook ] \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" storage.saveUserPrefs(model.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" logger.severe(\"Failed to save preferences \" + StringUtil.getDetails(e));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":185}},{"path":"src/main/java/hallpointer/address/commons/util/StringUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.commons.util;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.io.PrintWriter;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.io.StringWriter;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Helper functions for handling strings.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StringUtil {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Returns true if the {@code sentence} contains the {@code word}.","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Ignores case, but a full word match is required.","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * \u003cbr\u003eexamples:\u003cpre\u003e","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"abc\") \u003d\u003d true","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"DEF\") \u003d\u003d true","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * containsWordIgnoreCase(\"ABc def\", \"AB\") \u003d\u003d false //not a full word match","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * \u003c/pre\u003e","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * @param sentence cannot be null","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param word cannot be null, cannot be empty, must be a single word","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static boolean containsWordIgnoreCase(String sentence, String word) {","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" requireNonNull(sentence);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" requireNonNull(word);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" String preppedWord \u003d word.trim();","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" checkArgument(!preppedWord.isEmpty(), \"Word parameter cannot be empty\");","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" checkArgument(preppedWord.split(\"\\\\s+\").length \u003d\u003d 1, \"Word parameter should be a single word\");","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" String preppedSentence \u003d sentence;","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" String[] wordsInPreppedSentence \u003d preppedSentence.split(\"\\\\s+\");","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return Arrays.stream(wordsInPreppedSentence)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" .anyMatch(preppedWord::equalsIgnoreCase);","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns a detailed message of the t, including the stack trace.","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static String getDetails(Throwable t) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" requireNonNull(t);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" StringWriter sw \u003d new StringWriter();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" t.printStackTrace(new PrintWriter(sw));","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return t.getMessage() + \"\\n\" + sw.toString();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns true if {@code s} represents a non-zero unsigned integer","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * e.g. 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * e.g. empty string, \"-1\", \"0\", \"+1\", and \" 2 \" (untrimmed), \"3 0\" (contains whitespace), \"1 a\" (contains letters)","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static boolean isNonZeroUnsignedInteger(String s) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" requireNonNull(s);","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" return value \u003e 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if {@code s} represents a non-negative unsigned integer","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" * e.g. 0, 1, 2, 3, ..., {@code Integer.MAX_VALUE} \u003cbr\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" * Will return false for any other non-null string input","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" * e.g. empty string, \"-1\", \"+1\", and \" 2 \" (untrimmed), \"3 0\" (contains whitespace), \"1 a\" (contains letters)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" * @throws NullPointerException if {@code s} is null.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" public static boolean isNonNegativeUnsignedInteger(String s) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(s);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" try {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" int value \u003d Integer.parseInt(s);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" return value \u003e\u003d 0 \u0026\u0026 !s.startsWith(\"+\"); // \"+1\" is successfully parsed by Integer#parseInt(String)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" } catch (NumberFormatException nfe) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" return false;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":18,"-":68}},{"path":"src/main/java/hallpointer/address/logic/Logic.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.CommandResult;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * API of the Logic component","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public interface Logic {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" * @param commandText The command as entered by the user.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * @return the result of the command execution.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * @throws CommandException If an error occurs during command execution.","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * @throws ParseException If an error occurs during parsing.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" CommandResult execute(String commandText) throws CommandException, ParseException;","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Returns the AddressBook.","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @see hallpointer.address.model.Model#getAddressBook()","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" /** Returns an unmodifiable view of the filtered list of members */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" ObservableList\u003cMember\u003e getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Set the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":47}},{"path":"src/main/java/hallpointer/address/logic/LogicManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.Command;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.CommandResult;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.AddressBookParser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.Storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * The main LogicManager of the app.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class LogicManager implements Logic {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_ERROR_FORMAT \u003d \"Could not save data due to the following error: %s\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public static final String FILE_OPS_PERMISSION_ERROR_FORMAT \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \"Could not save data to file %s due to insufficient permissions to write to the file or the folder.\";","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(LogicManager.class);","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private final Model model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private final Storage storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser addressBookParser;","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Constructs a {@code LogicManager} with the given {@code Model} and {@code Storage}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public LogicManager(Model model, Storage storage) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this.model \u003d model;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" this.storage \u003d storage;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBookParser \u003d new AddressBookParser();","lastModifiedDate":"2018-01-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public CommandResult execute(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" logger.info(\"----------------[USER COMMAND][\" + commandText + \"]\");","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" CommandResult commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" Command command \u003d addressBookParser.parseCommand(commandText);","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" commandResult \u003d command.execute(model);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" storage.saveAddressBook(model.getAddressBook());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" } catch (AccessDeniedException e) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_PERMISSION_ERROR_FORMAT, e.getMessage()), e);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" throw new CommandException(String.format(FILE_OPS_ERROR_FORMAT, ioe.getMessage()), ioe);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return model.getAddressBook();","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getFilteredMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" return model.getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return model.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" return model.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" model.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":85}},{"path":"src/main/java/hallpointer/address/logic/Messages.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.Prefix;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * Container for user visible messages.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class Messages {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public static final String MESSAGE_UNKNOWN_COMMAND \u003d \"Unknown command\";","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_COMMAND_FORMAT \u003d \"Invalid command format! \\n%1$s\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX \u003d \"Error: Invalid index specified.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_MEMBERS_LISTED_OVERVIEW \u003d \"%1$d members listed!\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String MESSAGE_DUPLICATE_FIELDS \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \"Multiple values specified for the following single-valued field(s): \";","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns an error message indicating the duplicate prefixes.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public static String getErrorMessageForDuplicatePrefixes(Prefix... duplicatePrefixes) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assert duplicatePrefixes.length \u003e 0;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Set\u003cString\u003e duplicateFields \u003d","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" Stream.of(duplicatePrefixes).map(Prefix::toString).collect(Collectors.toSet());","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" return MESSAGE_DUPLICATE_FIELDS + String.join(\" \", duplicateFields);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" * Formats the {@code member} for display to the user.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" public static String format(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" final StringBuilder builder \u003d new StringBuilder();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" builder.append(member.getName())","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" .append(\"; Telegram: \")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" .append(member.getTelegram())","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" .append(\"; Room: \")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" .append(member.getRoom())","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .append(\"; Tags: \");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" member.getTags().forEach(builder::append);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" return builder.toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"taggyhan":1,"starchypotatocode":10,"-":38}},{"path":"src/main/java/hallpointer/address/logic/commands/AddMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"taggyhan"},"content":" * Adds a member to the CCA system.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"taggyhan"},"content":" public static final String COMMAND_WORD \u003d \"add_member\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Adds a member to the CCA. \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Parameters: \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"NAME \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"taggyhan"},"content":" + PREFIX_TELEGRAM + \"TELEGRAM_HANDLE \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"taggyhan"},"content":" + PREFIX_ROOM + \"ROOM_NUMBER \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"taggyhan"},"content":" + PREFIX_ROOM + \"4/3/301 \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"taggyhan"},"content":" + PREFIX_TELEGRAM + \"johndoe123 \"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":" + PREFIX_TAG + \"logistics\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Member %1$s with room %2$s and Telegram handle %3$s \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"taggyhan"},"content":" + \"added successfully.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_DUPLICATE_MEMBER \u003d \"This member already exists in the CCA system.\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" private final Member toAdd;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" * Creates an AddMemberCommand to add the specified {@code Member}","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" public AddMemberCommand(Member member) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" toAdd \u003d member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" if (model.hasMember(toAdd)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" throw new CommandException(MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"taggyhan"},"content":" // Add member to the model","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" model.addMember(toAdd);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"taggyhan"},"content":" // Format the success message with the member\u0027s name, room number, and Telegram handle","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"taggyhan"},"content":" return new CommandResult(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":" String.format(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"taggyhan"},"content":" MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"taggyhan"},"content":" toAdd.getName().fullName,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":" toAdd.getRoom().value,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"taggyhan"},"content":" toAdd.getTelegram().value","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"taggyhan"},"content":" )","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"taggyhan"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof AddMemberCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand otherAddMemberCommand \u003d (AddMemberCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" return toAdd.equals(otherAddMemberCommand.toAdd);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" .add(\"toAdd\", toAdd)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"taggyhan":22,"starchypotatocode":15,"-":52}},{"path":"src/main/java/hallpointer/address/logic/commands/DeleteMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"taggyhan"},"content":" * Deletes a member identified using its displayed index from the CCA system.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"public class DeleteMemberCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"taggyhan"},"content":" public static final String COMMAND_WORD \u003d \"delete_member\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" + \": Deletes the member identified by the index number used in the displayed member list.\\n\"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer)\\n\"","lastModifiedDate":"2016-09-29","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1\";","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_DELETE_MEMBER_SUCCESS \u003d \"Member %1$s with room %2$s and Telegram Handle %3$s \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"taggyhan"},"content":" + \"deleted successfully.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Error: Invalid index specified.\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final Index targetIndex;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" public DeleteMemberCommand(Index targetIndex) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" this.targetIndex \u003d targetIndex;","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e lastShownList \u003d model.getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"taggyhan"},"content":" // Check if the index is valid","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (targetIndex.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":" throw new CommandException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"taggyhan"},"content":" // Get the member to delete","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" Member memberToDelete \u003d lastShownList.get(targetIndex.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" model.deleteMember(memberToDelete);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"taggyhan"},"content":" // Success message with name, room, and telegram details","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"taggyhan"},"content":" return new CommandResult(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"taggyhan"},"content":" String.format(MESSAGE_DELETE_MEMBER_SUCCESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"taggyhan"},"content":" memberToDelete.getName().fullName,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"taggyhan"},"content":" memberToDelete.getRoom().value,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"taggyhan"},"content":" memberToDelete.getTelegram().value)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"taggyhan"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof DeleteMemberCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand otherDeleteMemberCommand \u003d (DeleteMemberCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" return targetIndex.equals(otherDeleteMemberCommand.targetIndex);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" .add(\"targetIndex\", targetIndex)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"taggyhan":17,"starchypotatocode":10,"-":53}},{"path":"src/main/java/hallpointer/address/logic/commands/ExitCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * Terminates the program.","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class ExitCommand extends Command {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" public static final String COMMAND_WORD \u003d \"exit\";","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_EXIT_ACKNOWLEDGEMENT \u003d \"Exiting Room Book as requested...\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_EXIT_ACKNOWLEDGEMENT, false, true);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":18}},{"path":"src/main/java/hallpointer/address/logic/commands/FindMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"taggyhan"},"content":" * Finds and lists all members in the CCA system whose name contains any of the argument keywords.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" * Keyword matching is case-insensitive.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"public class FindMemberCommand extends Command {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":" public static final String COMMAND_WORD \u003d \"find_members\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Finds all members whose names contain any of \"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" + \"the specified keywords (case-insensitive) and displays them as a list with index numbers.\\n\"","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" + \"Parameters: KEYWORD [MORE_KEYWORDS]...\\n\"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":" + \"Example: \" + COMMAND_WORD + \" John Jane\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final NameContainsKeywordsPredicate predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" public FindMemberCommand(NameContainsKeywordsPredicate predicate) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" this.predicate \u003d predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return new CommandResult(","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" String.format(Messages.MESSAGE_MEMBERS_LISTED_OVERVIEW, model.getFilteredMemberList().size()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof FindMemberCommand)) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand otherFindMemberCommand \u003d (FindMemberCommand) other;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" return predicate.equals(otherFindMemberCommand.predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .add(\"predicate\", predicate)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-22","isFullCredit":false}],"authorContributionMap":{"taggyhan":3,"starchypotatocode":10,"-":44}},{"path":"src/main/java/hallpointer/address/logic/commands/ListMembersCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.model.Model.PREDICATE_SHOW_ALL_MEMBERS;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"taggyhan"},"content":" * Lists all members in the CCA system to the user.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"taggyhan"},"content":"public class ListMembersCommand extends Command {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"taggyhan"},"content":" public static final String COMMAND_WORD \u003d \"list_members\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_SUCCESS \u003d \"Listed all members\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_NO_MEMBERS \u003d \"Error: No members found.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(PREDICATE_SHOW_ALL_MEMBERS);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" return new CommandResult(MESSAGE_SUCCESS);","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"taggyhan":4,"starchypotatocode":3,"-":18}},{"path":"src/main/java/hallpointer/address/logic/commands/UpdateMemberCommand.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.model.Model.PREDICATE_SHOW_ALL_MEMBERS;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.CollectionUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"taggyhan"},"content":" * Updates the details of an existing member in the CCA system.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":"public class UpdateMemberCommand extends Command {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"taggyhan"},"content":" public static final String COMMAND_WORD \u003d \"update_member\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_USAGE \u003d COMMAND_WORD + \": Updates the details of the member identified \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" + \"by the index number used in the displayed member list. \"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" + \"Existing values will be overwritten by the input values.\\n\"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" + \"Parameters: INDEX (must be a positive integer) \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_NAME + \"NAME] \"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"taggyhan"},"content":" + \"[\" + PREFIX_TELEGRAM + \"TELEGRAM_HANDLE] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":" + \"[\" + PREFIX_ROOM + \"ROOM_NUMBER] \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" + \"[\" + PREFIX_TAG + \"TAG]...\\n\"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" + \"Example: \" + COMMAND_WORD + \" 1 \"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"taggyhan"},"content":" + PREFIX_NAME + \"John Doe \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"taggyhan"},"content":" + PREFIX_ROOM + \"9/10/203 \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"taggyhan"},"content":" + PREFIX_TELEGRAM + \"johnDoe123 \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"taggyhan"},"content":" + PREFIX_TAG + \"friend\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_UPDATE_MEMBER_SUCCESS \u003d \"Member %1$s\u0027s details updated successfully.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_NOT_UPDATED \u003d \"At least one field to update must be provided.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_DUPLICATE_MEMBER \u003d \"A member with the same name already exists.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"taggyhan"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Error: Invalid index specified.\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private final Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"taggyhan"},"content":" private final UpdateMemberDescriptor updateMemberDescriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":" * @param index of the member in the filtered member list to update","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"taggyhan"},"content":" * @param updateMemberDescriptor details to update the member with","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberCommand(Index index, UpdateMemberDescriptor updateMemberDescriptor) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(index);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"taggyhan"},"content":" requireNonNull(updateMemberDescriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" this.index \u003d index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"taggyhan"},"content":" this.updateMemberDescriptor \u003d new UpdateMemberDescriptor(updateMemberDescriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public CommandResult execute(Model model) throws CommandException {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" requireNonNull(model);","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e lastShownList \u003d model.getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (index.getZeroBased() \u003e\u003d lastShownList.size()) {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"taggyhan"},"content":" throw new CommandException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"taggyhan"},"content":" Member memberToUpdate \u003d lastShownList.get(index.getZeroBased());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"taggyhan"},"content":" Member updatedMember \u003d createUpdatedMember(memberToUpdate, updateMemberDescriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"taggyhan"},"content":" if (!memberToUpdate.isSameMember(updatedMember) \u0026\u0026 model.hasMember(updatedMember)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" throw new CommandException(MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"taggyhan"},"content":" model.setMember(memberToUpdate, updatedMember);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(PREDICATE_SHOW_ALL_MEMBERS);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"taggyhan"},"content":" return new CommandResult(String.format(MESSAGE_UPDATE_MEMBER_SUCCESS, Messages.format(updatedMember)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"taggyhan"},"content":" * Creates and returns a {@code Member} with the details of {@code memberToUpdate}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"taggyhan"},"content":" * edited with {@code updateMemberDescriptor}.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"taggyhan"},"content":" private static Member createUpdatedMember(Member memberToUpdate, UpdateMemberDescriptor updateMemberDescriptor) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"taggyhan"},"content":" assert memberToUpdate !\u003d null;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"taggyhan"},"content":" Name updatedName \u003d updateMemberDescriptor.getName().orElse(memberToUpdate.getName());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"taggyhan"},"content":" Telegram updatedTelegram \u003d updateMemberDescriptor.getTelegram().orElse(memberToUpdate.getTelegram());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"taggyhan"},"content":" Room updatedRoom \u003d updateMemberDescriptor.getRoom().orElse(memberToUpdate.getRoom());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"taggyhan"},"content":" Set\u003cTag\u003e updatedTags \u003d updateMemberDescriptor.getTags().orElse(memberToUpdate.getTags());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" return new Member(updatedName, updatedTelegram, updatedRoom, updatedTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"taggyhan"},"content":" if (!(other instanceof UpdateMemberCommand)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand otherUpdateMemberCommand \u003d (UpdateMemberCommand) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"taggyhan"},"content":" return index.equals(otherUpdateMemberCommand.index)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"taggyhan"},"content":" \u0026\u0026 updateMemberDescriptor.equals(otherUpdateMemberCommand.updateMemberDescriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" .add(\"index\", index)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"taggyhan"},"content":" .add(\"UpdateMemberDescriptor\", new UpdateMemberDescriptor())","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"taggyhan"},"content":" * Stores the details to update the member with. Each non-empty field value will replace the","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":" * corresponding field value of the member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"taggyhan"},"content":" public static class UpdateMemberDescriptor {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"starchypotatocode"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"starchypotatocode"},"content":" private Room room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptor() {}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" * Copy constructor.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptor(UpdateMemberDescriptor toCopy) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" setName(toCopy.name);","lastModifiedDate":"2018-01-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"starchypotatocode"},"content":" setTelegram(toCopy.telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"starchypotatocode"},"content":" setRoom(toCopy.room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" setTags(toCopy.tags);","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"taggyhan"},"content":" * Returns true if at least one field is updated.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"taggyhan"},"content":" public boolean isAnyFieldUpdated() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"starchypotatocode"},"content":" return CollectionUtil.isAnyNonNull(name, telegram, room, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void setName(Name name) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" public Optional\u003cName\u003e getName() {","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" return Optional.ofNullable(name);","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" public void setTelegram(Telegram telegram) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"starchypotatocode"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"starchypotatocode"},"content":" public Optional\u003cTelegram\u003e getTelegram() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"starchypotatocode"},"content":" return Optional.ofNullable(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"starchypotatocode"},"content":" public void setRoom(Room room) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"starchypotatocode"},"content":" this.room \u003d room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"starchypotatocode"},"content":" public Optional\u003cRoom\u003e getRoom() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"starchypotatocode"},"content":" return Optional.ofNullable(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" * Sets {@code tags} to this object\u0027s {@code tags}.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" * A defensive copy of {@code tags} is used internally.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" public void setTags(Set\u003cTag\u003e tags) {","lastModifiedDate":"2017-06-21","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" this.tags \u003d (tags !\u003d null) ? new HashSet\u003c\u003e(tags) : null;","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" * Returns {@code Optional#empty()} if {@code tags} is null.","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" public Optional\u003cSet\u003cTag\u003e\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" return (tags !\u003d null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty();","lastModifiedDate":"2018-01-11","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"taggyhan"},"content":" if (!(other instanceof UpdateMemberDescriptor)) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor otherUpdateMemberDescriptor \u003d (UpdateMemberDescriptor) other;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"taggyhan"},"content":" return Objects.equals(name, otherUpdateMemberDescriptor.name)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"taggyhan"},"content":" \u0026\u0026 Objects.equals(telegram, otherUpdateMemberDescriptor.telegram)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"taggyhan"},"content":" \u0026\u0026 Objects.equals(room, otherUpdateMemberDescriptor.room)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"taggyhan"},"content":" \u0026\u0026 Objects.equals(tags, otherUpdateMemberDescriptor.tags);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"starchypotatocode"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"starchypotatocode"},"content":" .add(\"room\", room)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-26","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-26","isFullCredit":false}],"authorContributionMap":{"taggyhan":51,"starchypotatocode":28,"-":149}},{"path":"src/main/java/hallpointer/address/logic/parser/AddMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" * Parses input arguments and creates a new AddMemberCommand object","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommandParser implements Parser\u003cAddMemberCommand\u003e {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" * Parses the given {@code String} of arguments in the context of the AddMemberCommand","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" * and returns an AddMemberCommand object for execution.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public AddMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM, PREFIX_TAG);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" || !argMultimap.getPreamble().isEmpty()) {","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Name name \u003d ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get());","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" Telegram telegram \u003d ParserUtil.parseTelegram(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" argMultimap.getValue(PREFIX_TELEGRAM).get());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" Room room \u003d ParserUtil.parseRoom(argMultimap.getValue(PREFIX_ROOM).get());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tagList \u003d ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG));","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d new Member(name, telegram, room, tagList);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" return new AddMemberCommand(member);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Returns true if none of the prefixes contains empty {@code Optional} values in the given","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * {@code ArgumentMultimap}.","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) {","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" return Stream.of(prefixes).allMatch(prefix -\u003e argumentMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-17","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-05","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":22,"-":37}},{"path":"src/main/java/hallpointer/address/logic/parser/AddressBookParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.regex.Matcher;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.regex.Pattern;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.Command;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.FindMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.ListMembersCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Parses user input.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookParser {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Used for initial separation of command word and args.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private static final Pattern BASIC_COMMAND_FORMAT \u003d Pattern.compile(\"(?\u003ccommandWord\u003e\\\\S+)(?\u003carguments\u003e.*)\");","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(AddressBookParser.class);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" * Parses user input into command for execution.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" * @param userInput full user input string","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @return the command based on the user input","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Command parseCommand(String userInput) throws ParseException {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" final Matcher matcher \u003d BASIC_COMMAND_FORMAT.matcher(userInput.trim());","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" if (!matcher.matches()) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE));","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" final String commandWord \u003d matcher.group(\"commandWord\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" final String arguments \u003d matcher.group(\"arguments\");","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // Note to developers: Change the log level in config.json to enable lower level (i.e., FINE, FINER and lower)","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // log messages such as the one below.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // Lower level log messages are used sparingly to minimize noise in the code.","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" logger.fine(\"Command word: \" + commandWord + \"; Arguments: \" + arguments);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" switch (commandWord) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" case AddMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" return new AddMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":" case UpdateMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"taggyhan"},"content":" return new UpdateMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-21","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" case DeleteMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" return new DeleteMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" case ClearCommand.COMMAND_WORD:","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" return new ClearCommand();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" case FindMemberCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" return new FindMemberCommandParser().parse(arguments);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"taggyhan"},"content":" case ListMembersCommand.COMMAND_WORD:","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"taggyhan"},"content":" return new ListMembersCommand();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" case ExitCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return new ExitCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" case HelpCommand.COMMAND_WORD:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" return new HelpCommand();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" default:","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" logger.finer(\"This user input caused a ParseException: \" + userInput);","lastModifiedDate":"2023-07-29","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"taggyhan":6,"starchypotatocode":10,"-":70}},{"path":"src/main/java/hallpointer/address/logic/parser/ArgumentMultimap.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashMap;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Map;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Stores mapping of prefixes to their respective arguments.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Each key may be associated with multiple argument values.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Values for a given key are stored in a list, and the insertion ordering is maintained.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Keys are unique, but the list of argument values may contain duplicate argument values, i.e. the same argument value","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * can be inserted multiple times for the same prefix.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ArgumentMultimap {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /** Prefixes mapped to their respective arguments**/","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final Map\u003cPrefix, List\u003cString\u003e\u003e argMultimap \u003d new HashMap\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * Associates the specified argument value with {@code prefix} key in this map.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * If the map previously contained a mapping for the key, the new value is appended to the list of existing values.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" * @param prefix Prefix key with which the specified argument value is to be associated","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" * @param argValue Argument value to be associated with the specified prefix key","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" public void put(Prefix prefix, String argValue) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" List\u003cString\u003e argValues \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" argValues.add(argValue);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" argMultimap.put(prefix, argValues);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Returns the last value of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public Optional\u003cString\u003e getValue(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" List\u003cString\u003e values \u003d getAllValues(prefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" return values.isEmpty() ? Optional.empty() : Optional.of(values.get(values.size() - 1));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" * Returns all values of {@code prefix}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * If the prefix does not exist or has no values, this will return an empty list.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * Modifying the returned list will not affect the underlying data structure of the ArgumentMultimap.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public List\u003cString\u003e getAllValues(Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (!argMultimap.containsKey(prefix)) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(argMultimap.get(prefix));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * Returns the preamble (text before the first valid prefix). Trims any leading/trailing spaces.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public String getPreamble() {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return getValue(new Prefix(\"\")).orElse(\"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * Throws a {@code ParseException} if any of the prefixes given in {@code prefixes} appeared more than","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * once among the arguments.","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void verifyNoDuplicatePrefixesFor(Prefix... prefixes) throws ParseException {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" // Stream.of(prefixes).distinct() sorts prefixes by lexicographical order","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" Prefix[] duplicatedPrefixes \u003d Stream.of(prefixes).distinct()","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" .filter(prefix -\u003e argMultimap.containsKey(prefix) \u0026\u0026 argMultimap.get(prefix).size() \u003e 1)","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" .toArray(Prefix[]::new);","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" if (duplicatedPrefixes.length \u003e 0) {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" throw new ParseException(Messages.getErrorMessageForDuplicatePrefixes(duplicatedPrefixes));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":78}},{"path":"src/main/java/hallpointer/address/logic/parser/ArgumentTokenizer.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" * Tokenizes arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}\u003cbr\u003e","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" * e.g. {@code some preamble text t/ 11.00 t/12.00 k/ m/ July} where prefixes are {@code t/ k/ m/}.\u003cbr\u003e","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * 1. An argument\u0027s value can be an empty string e.g. the value of {@code k/} in the above example.\u003cbr\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * 2. Leading and trailing whitespaces of an argument value will be discarded.\u003cbr\u003e","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" * 3. Consecutive whitespace will be replaced with a single space.\u003cbr\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * 4. An argument may be repeated and all its values will be accumulated e.g. the value of {@code t/}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * in the above example.\u003cbr\u003e","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"public class ArgumentTokenizer {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Tokenizes an arguments string and returns an {@code ArgumentMultimap} object that maps prefixes to their","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * respective argument values. Only the given prefixes will be recognized in the arguments string.","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" * Consecutive whitespace will also be replaced with a single space.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to tokenize the arguments string with","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static ArgumentMultimap tokenize(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" List\u003cPrefixPosition\u003e positions \u003d findAllPrefixPositions(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" argsString.replaceAll(\"\\\\s+\", \" \"), prefixes);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" return extractArguments(argsString.replaceAll(\"\\\\s+\", \" \"), positions);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Finds all zero-based prefix positions in the given arguments string.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * @param prefixes Prefixes to find in the arguments string","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * @return List of zero-based prefix positions in the given arguments string","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findAllPrefixPositions(String argsString, Prefix... prefixes) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return Arrays.stream(prefixes)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" .flatMap(prefix -\u003e findPrefixPositions(argsString, prefix).stream())","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * {@see findAllPrefixPositions}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" private static List\u003cPrefixPosition\u003e findPrefixPositions(String argsString, Prefix prefix) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" List\u003cPrefixPosition\u003e positions \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" int prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), 0);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" while (prefixPosition !\u003d -1) {","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" PrefixPosition extendedPrefix \u003d new PrefixPosition(prefix, prefixPosition);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" positions.add(extendedPrefix);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" prefixPosition \u003d findPrefixPosition(argsString, prefix.getPrefix(), prefixPosition);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return positions;","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" * Returns the index of the first occurrence of {@code prefix} in","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" * {@code argsString} starting from index {@code fromIndex}. An occurrence","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" * is valid if there is a whitespace before {@code prefix}. Returns -1 if no","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * such occurrence can be found.","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * E.g if {@code argsString} \u003d \"e/hip/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns -1 as there are no valid","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * occurrences of \"p/\" with whitespace before it. However, if","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * {@code argsString} \u003d \"e/hi p/900\", {@code prefix} \u003d \"p/\" and","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" * {@code fromIndex} \u003d 0, this method returns 5.","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" private static int findPrefixPosition(String argsString, String prefix, int fromIndex) {","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" int prefixIndex \u003d argsString.indexOf(\" \" + prefix, fromIndex);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return prefixIndex \u003d\u003d -1 ? -1","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" : prefixIndex + 1; // +1 as offset for whitespace","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" * Extracts prefixes and their argument values, and returns an {@code ArgumentMultimap} object that maps the","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * extracted prefixes to their respective arguments. Prefixes are extracted based on their zero-based positions in","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * {@code argsString}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @param argsString Arguments string of the form: {@code preamble \u003cprefix\u003evalue \u003cprefix\u003evalue ...}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * @param prefixPositions Zero-based positions of all prefixes in {@code argsString}","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * @return ArgumentMultimap object that maps prefixes to their arguments","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" private static ArgumentMultimap extractArguments(String argsString, List\u003cPrefixPosition\u003e prefixPositions) {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" // Sort by start position","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" prefixPositions.sort((prefix1, prefix2) -\u003e prefix1.getStartPosition() - prefix2.getStartPosition());","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // Insert a PrefixPosition to represent the preamble","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" PrefixPosition preambleMarker \u003d new PrefixPosition(new Prefix(\"\"), 0);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" prefixPositions.add(0, preambleMarker);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // Add a dummy PrefixPosition to represent the end of the string","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" PrefixPosition endPositionMarker \u003d new PrefixPosition(new Prefix(\"\"), argsString.length());","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" prefixPositions.add(endPositionMarker);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" // Map prefixes to their argument values (if any)","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d new ArgumentMultimap();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c prefixPositions.size() - 1; i++) {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" // Extract and store prefixes and their arguments","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" Prefix argPrefix \u003d prefixPositions.get(i).getPrefix();","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" String argValue \u003d extractArgumentValue(argsString, prefixPositions.get(i), prefixPositions.get(i + 1));","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" argMultimap.put(argPrefix, argValue);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" return argMultimap;","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" * Returns the trimmed value of the argument in the arguments string specified by {@code currentPrefixPosition}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" * The end position of the value is determined by {@code nextPrefixPosition}.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" private static String extractArgumentValue(String argsString,","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" PrefixPosition currentPrefixPosition,","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" PrefixPosition nextPrefixPosition) {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" Prefix prefix \u003d currentPrefixPosition.getPrefix();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" int valueStartPos \u003d currentPrefixPosition.getStartPosition() + prefix.getPrefix().length();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" String value \u003d argsString.substring(valueStartPos, nextPrefixPosition.getStartPosition());","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" return value.trim();","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" * Represents a prefix\u0027s position in an arguments string.","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" private static class PrefixPosition {","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" private int startPosition;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" private final Prefix prefix;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" PrefixPosition(Prefix prefix, int startPosition) {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" this.prefix \u003d prefix;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" this.startPosition \u003d startPosition;","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" int getStartPosition() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" return startPosition;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" Prefix getPrefix() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" return prefix;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":6,"-":145}},{"path":"src/main/java/hallpointer/address/logic/parser/CliSyntax.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":" * Contains Command Line Interface (CLI) syntax definitions common to multiple commands","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"public class CliSyntax {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" /* Prefix definitions */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" public static final Prefix PREFIX_NAME \u003d new Prefix(\"n/\");","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"taggyhan"},"content":" public static final Prefix PREFIX_TELEGRAM \u003d new Prefix(\"t/\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" public static final Prefix PREFIX_ROOM \u003d new Prefix(\"r/\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"taggyhan"},"content":" public static final Prefix PREFIX_TAG \u003d new Prefix(\"tag/\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"taggyhan":2,"starchypotatocode":1,"-":11}},{"path":"src/main/java/hallpointer/address/logic/parser/DeleteMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":" * Parses input arguments and creates a new DeleteMemberCommand object","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"public class DeleteMemberCommandParser implements Parser\u003cDeleteMemberCommand\u003e {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" * Parses the given {@code String} of arguments in the context of the DeleteMemberCommand","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * and returns a DeleteMemberCommand object for execution.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" public DeleteMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" Index index \u003d ParserUtil.parseIndex(args);","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" return new DeleteMemberCommand(index);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteMemberCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":9,"-":20}},{"path":"src/main/java/hallpointer/address/logic/parser/FindMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.FindMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"taggyhan"},"content":" * Parses input arguments and creates a new FindMemberCommand object.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"public class FindMemberCommandParser implements Parser\u003cFindMemberCommand\u003e {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" * Parses the given {@code String} of arguments in the context of the FindMemberCommand","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" * and returns a FindMemberCommand object for execution.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" public FindMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" String trimmedArgs \u003d args.trim();","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" if (trimmedArgs.isEmpty()) {","lastModifiedDate":"2017-02-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" throw new ParseException(","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" String[] nameKeywords \u003d trimmedArgs.split(\"\\\\s+\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" return new FindMemberCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords)));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false}],"authorContributionMap":{"taggyhan":1,"starchypotatocode":9,"-":22}},{"path":"src/main/java/hallpointer/address/logic/parser/Parser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.Command;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * Represents a Parser that is able to parse user input into a {@code Command} of type {@code T}.","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface Parser\u003cT extends Command\u003e {","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a command and returns it.","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if {@code userInput} does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" T parse(String userInput) throws ParseException;","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-07-06","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":15}},{"path":"src/main/java/hallpointer/address/logic/parser/ParserUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.StringUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Contains utility methods used for parsing strings in the various *Parser classes.","lastModifiedDate":"2017-07-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"public class ParserUtil {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" public static final String MESSAGE_INVALID_INDEX \u003d \"Index is not a non-zero unsigned integer.\";","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * Parses {@code oneBasedIndex} into an {@code Index} and returns it. Leading and trailing whitespaces will be","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * trimmed.","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * @throws ParseException if the specified index is invalid (not non-zero unsigned integer).","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static Index parseIndex(String oneBasedIndex) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" String trimmedIndex \u003d oneBasedIndex.trim();","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" if (!StringUtil.isNonZeroUnsignedInteger(trimmedIndex)) {","lastModifiedDate":"2017-06-02","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" throw new ParseException(MESSAGE_INVALID_INDEX);","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return Index.fromOneBased(Integer.parseInt(trimmedIndex));","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Parses a {@code String name} into a {@code Name}.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code name} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static Name parseName(String name) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" String trimmedName \u003d name.trim();","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" if (!Name.isValidName(trimmedName)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" throw new ParseException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" return new Name(trimmedName);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" * Parses a {@code String telegram} into a {@code Telegram}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the given {@code telegram} is invalid.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public static Telegram parseTelegram(String telegram) throws ParseException {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" String trimmedTelegram \u003d telegram.trim();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" if (!Telegram.isValidTelegram(trimmedTelegram)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" throw new ParseException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" return new Telegram(trimmedTelegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" * Parses a {@code String room} into an {@code Room}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the given {@code room} is invalid.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" public static Room parseRoom(String room) throws ParseException {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" String trimmedRoom \u003d room.trim();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" if (!Room.isValidRoom(trimmedRoom)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" throw new ParseException(Room.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" return new Room(trimmedRoom);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" * Parses a {@code String tag} into a {@code Tag}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Leading and trailing whitespaces will be trimmed.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * @throws ParseException if the given {@code tag} is invalid.","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public static Tag parseTag(String tag) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" requireNonNull(tag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" String trimmedTag \u003d tag.trim();","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" if (!Tag.isValidTagName(trimmedTag)) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" throw new ParseException(Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" return new Tag(trimmedTag);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e}.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e parseTags(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" requireNonNull(tags);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" final Set\u003cTag\u003e tagSet \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" for (String tagName : tags) {","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" tagSet.add(parseTag(tagName));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" return tagSet;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-11","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-02-11","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":19,"-":89}},{"path":"src/main/java/hallpointer/address/logic/parser/UpdateMemberCommandParser.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Optional;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand.UpdateMemberDescriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":" * Parses input arguments and creates a new UpdateMemberCommand object","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"taggyhan"},"content":"public class UpdateMemberCommandParser implements Parser\u003cUpdateMemberCommand\u003e {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"taggyhan"},"content":" * Parses the given {@code String} of arguments in the context of the UpdateMemberCommand","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"taggyhan"},"content":" * and returns an UpdateMemberCommand object for execution.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" * @throws ParseException if the user input does not conform to the expected format","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberCommand parse(String args) throws ParseException {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" requireNonNull(args);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM, PREFIX_TAG);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" Index index;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" index \u003d ParserUtil.parseIndex(argMultimap.getPreamble());","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" } catch (ParseException pe) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand.MESSAGE_USAGE), pe);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" argMultimap.verifyNoDuplicatePrefixesFor(PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor updateMemberDescriptor \u003d new UpdateMemberDescriptor();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (argMultimap.getValue(PREFIX_NAME).isPresent()) {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"taggyhan"},"content":" updateMemberDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" if (argMultimap.getValue(PREFIX_TELEGRAM).isPresent()) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"taggyhan"},"content":" updateMemberDescriptor.setTelegram(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" ParserUtil.parseTelegram(argMultimap.getValue(PREFIX_TELEGRAM).get()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" if (argMultimap.getValue(PREFIX_ROOM).isPresent()) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"taggyhan"},"content":" updateMemberDescriptor.setRoom(ParserUtil.parseRoom(argMultimap.getValue(PREFIX_ROOM).get()));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":" parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(updateMemberDescriptor::setTags);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"taggyhan"},"content":" if (!updateMemberDescriptor.isAnyFieldUpdated()) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":" throw new ParseException(UpdateMemberCommand.MESSAGE_NOT_UPDATED);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"taggyhan"},"content":" return new UpdateMemberCommand(index, updateMemberDescriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * Parses {@code Collection\u003cString\u003e tags} into a {@code Set\u003cTag\u003e} if {@code tags} is non-empty.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * If {@code tags} contain only one element which is an empty string, it will be parsed into a","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" * {@code Set\u003cTag\u003e} containing zero tags.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" private Optional\u003cSet\u003cTag\u003e\u003e parseTagsForEdit(Collection\u003cString\u003e tags) throws ParseException {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assert tags !\u003d null;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" return Optional.empty();","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" Collection\u003cString\u003e tagSet \u003d tags.size() \u003d\u003d 1 \u0026\u0026 tags.contains(\"\") ? Collections.emptySet() : tags;","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return Optional.of(ParserUtil.parseTags(tagSet));","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-26","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"taggyhan":17,"starchypotatocode":9,"-":58}},{"path":"src/main/java/hallpointer/address/model/AddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.UniqueMemberList;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * Wraps all data at the address-book level","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * Duplicates are not allowed (by .isSameMember comparison)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class AddressBook implements ReadOnlyAddressBook {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" private final UniqueMemberList members;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The \u0027unusual\u0027 code block below is a non-static initialization block, sometimes used to avoid duplication","lastModifiedDate":"2019-05-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" * among constructors.","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" members \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook() {}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" * Creates an AddressBook using the Members in the {@code toBeCopied}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" public AddressBook(ReadOnlyAddressBook toBeCopied) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" this();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" resetData(toBeCopied);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" //// list overwrite operations","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the contents of the member list with {@code members}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" * {@code members} must not contain duplicate members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers(List\u003cMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" this.members.setMembers(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * Resets the existing data of this {@code AddressBook} with {@code newData}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void resetData(ReadOnlyAddressBook newData) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" requireNonNull(newData);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" setMembers(newData.getMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" //// member-level operations","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if a member with the same identity as {@code member} exists in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMembers(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" return members.contains(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" * Adds a member to the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" * The member must not already exist in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" public void addMember(Member p) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" members.add(p);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the given member {@code target} in the list with {@code editedMember}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" * The member identity of {@code editedMember} must not be the same as another existing member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" public void setMember(Member target, Member editedMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" members.setMember(target, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" * Removes {@code key} from this {@code AddressBook}.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * {@code key} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" public void removeMember(Member key) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" members.remove(key);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" //// util methods","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" .add(\"members\", members)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" return members.asUnmodifiableObservableList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-01","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" if (!(other instanceof AddressBook)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" AddressBook otherAddressBook \u003d (AddressBook) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"starchypotatocode"},"content":" return members.equals(otherAddressBook.members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" return members.hashCode();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":32,"-":98}},{"path":"src/main/java/hallpointer/address/model/Model.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" * The API of the Model component.","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public interface Model {","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /** {@code Predicate} that always evaluate to true */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" Predicate\u003cMember\u003e PREDICATE_SHOW_ALL_MEMBERS \u003d unused -\u003e true;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Replaces user prefs data with the data in {@code userPrefs}.","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" void setUserPrefs(ReadOnlyUserPrefs userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Returns the user prefs.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" ReadOnlyUserPrefs getUserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" GuiSettings getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 GUI settings.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" void setGuiSettings(GuiSettings guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * Returns the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" Path getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" * Sets the user prefs\u0027 address book file path.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" void setAddressBookFilePath(Path addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Replaces address book data with the data in {@code addressBook}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" void setAddressBook(ReadOnlyAddressBook addressBook);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /** Returns the AddressBook */","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook getAddressBook();","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if a member with the same identity as {@code member} exists in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" boolean hasMember(Member member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" * Deletes the given member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" * The member must exist in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" void deleteMember(Member target);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" * Adds the given member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" * {@code member} must not already exist in the address book.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" void addMember(Member member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the given member {@code target} with {@code editedMember}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" * {@code target} must exist in the address book.","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" * The member identity of {@code editedMember} must not be the same as another existing member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" void setMember(Member target, Member editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" /** Returns an unmodifiable view of the filtered member list */","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" ObservableList\u003cMember\u003e getFilteredMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" * Updates the filter of the filtered member list to filter by the given {@code predicate}.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * @throws NullPointerException if {@code predicate} is null.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" void updateFilteredMemberList(Predicate\u003cMember\u003e predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-25","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":17,"-":70}},{"path":"src/main/java/hallpointer/address/model/ModelManager.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.collections.transformation.FilteredList;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * Represents the in-memory model of the address book data.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"public class ModelManager implements Model {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(ModelManager.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private final AddressBook addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private final UserPrefs userPrefs;","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private final FilteredList\u003cMember\u003e filteredMembers;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" * Initializes a ModelManager with the given addressBook and userPrefs.","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" requireAllNonNull(addressBook, userPrefs);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" logger.fine(\"Initializing with address book: \" + addressBook + \" and user prefs \" + userPrefs);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" this.addressBook \u003d new AddressBook(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" this.userPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" filteredMembers \u003d new FilteredList\u003c\u003e(this.addressBook.getMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public ModelManager() {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" this(new AddressBook(), new UserPrefs());","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d UserPrefs \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" requireNonNull(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.userPrefs.resetData(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return userPrefs;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return userPrefs.getGuiSettings();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" requireNonNull(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" return userPrefs.getAddressBookFilePath();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" requireNonNull(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(addressBookFilePath);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d AddressBook \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void setAddressBook(ReadOnlyAddressBook addressBook) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" this.addressBook.resetData(addressBook);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" return addressBook.hasMembers(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" public void deleteMember(Member target) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" addressBook.removeMember(target);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" public void addMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" updateFilteredMemberList(PREDICATE_SHOW_ALL_MEMBERS);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" public void setMember(Member target, Member editedMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" requireAllNonNull(target, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"starchypotatocode"},"content":" addressBook.setMember(target, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-13","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" //\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d Filtered Member List Accessors \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" * Returns an unmodifiable view of the list of {@code Member} backed by the internal list of","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" * {@code versionedAddressBook}","lastModifiedDate":"2018-06-11","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getFilteredMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":" return filteredMembers;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"starchypotatocode"},"content":" public void updateFilteredMemberList(Predicate\u003cMember\u003e predicate) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" requireNonNull(predicate);","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" filteredMembers.setPredicate(predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" if (!(other instanceof ModelManager)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" ModelManager otherModelManager \u003d (ModelManager) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" return addressBook.equals(otherModelManager.addressBook)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" \u0026\u0026 userPrefs.equals(otherModelManager.userPrefs)","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 filteredMembers.equals(otherModelManager.filteredMembers);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":21,"-":127}},{"path":"src/main/java/hallpointer/address/model/ReadOnlyAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":" * Unmodifiable view of an address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public interface ReadOnlyAddressBook {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" * Returns an unmodifiable view of the members list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" * This list will not contain any duplicate members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" ObservableList\u003cMember\u003e getMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":5,"-":12}},{"path":"src/main/java/hallpointer/address/model/member/Member.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Objects;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * Represents a Member in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"public class Member {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" // Identity fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private final Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private final Telegram telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" // Data fields","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private final Room room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private final Set\u003cTag\u003e tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" * Every field must be present and not null.","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public Member(Name name, Telegram telegram, Room room, Set\u003cTag\u003e tags) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" requireAllNonNull(name, telegram, room, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"taggyhan"},"content":" // Validate each field using regex","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"taggyhan"},"content":" if (!name.fullName.matches(\"^[a-zA-Z][a-zA-Z ]{0,99}$\")) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"taggyhan"},"content":" throw new IllegalArgumentException(\"Error: Invalid name format.\");","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"taggyhan"},"content":" if (!room.value.matches(\"^[0-9]+/[0-9]+/[0-9]+$\")) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"taggyhan"},"content":" throw new IllegalArgumentException(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"taggyhan"},"content":" \"Error: Room number must be in the format \u003cblock\u003e/\u003cfloor\u003e/\u003croom_number\u003e.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"taggyhan"},"content":" if (!telegram.value.matches(\"^[a-zA-Z](?:[a-zA-Z0-9]|_(?\u003d.*[a-zA-Z0-9]$)){4,31}$\")) {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":" throw new IllegalArgumentException(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"taggyhan"},"content":" \"Error: Telegram handle must only contain alphanumeric characters or underscores \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"taggyhan"},"content":" + \"and be between 5 to 32 characters long.\");","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"taggyhan"},"content":" // Set values after validation","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" this.room \u003d room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public Name getName() {","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public Telegram getTelegram() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" return telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" public Room getRoom() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" return room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" * Returns an immutable tag set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * if modification is attempted.","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" public Set\u003cTag\u003e getTags() {","lastModifiedDate":"2017-03-07","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" return Collections.unmodifiableSet(tags);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if both members have the same name.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"taggyhan"},"content":" * This is used to check for duplicates in the address book.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" public boolean isSameMember(Member otherMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" if (otherMember \u003d\u003d this) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"taggyhan"},"content":" // Check for duplicate based only on name","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" return otherMember !\u003d null","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 otherMember.getName().equals(getName());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if both members have the same identity and data fields.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" * This defines a stronger notion of equality between two members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof Member)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" Member otherMember \u003d (Member) other;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" return name.equals(otherMember.name)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 telegram.equals(otherMember.telegram)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 room.equals(otherMember.room)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" \u0026\u0026 tags.equals(otherMember.tags);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" // use this method for custom fields hashing instead of implementing your own","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" return Objects.hash(name, telegram, room, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" .add(\"name\", name)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" .add(\"telegram\", telegram)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" .add(\"room\", room)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" .add(\"tags\", tags)","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" .toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"taggyhan":18,"starchypotatocode":29,"-":78}},{"path":"src/main/java/hallpointer/address/model/member/Name.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":" * Represents a Member\u0027s name in the address book.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidName(String)}","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Name {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \"Names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2018-04-04","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * The first character of the name must not be a whitespace,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public final String fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Constructs a {@code Name}.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" * @param name A valid name.","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public Name(String name) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" requireNonNull(name);","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" checkArgument(isValidName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" fullName \u003d name;","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Returns true if a given string is a valid name.","lastModifiedDate":"2018-04-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static boolean isValidName(String test) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" return fullName;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" if (!(other instanceof Name)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" Name otherName \u003d (Name) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" return fullName.equals(otherName.fullName);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" return fullName.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":64}},{"path":"src/main/java/hallpointer/address/model/member/NameContainsKeywordsPredicate.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.StringUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":" * Tests that a {@code Member}\u0027s {@code Name} matches any of the keywords given.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"public class NameContainsKeywordsPredicate implements Predicate\u003cMember\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" private final List\u003cString\u003e keywords;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public NameContainsKeywordsPredicate(List\u003cString\u003e keywords) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" this.keywords \u003d keywords;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" public boolean test(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" return keywords.stream()","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" .anyMatch(keyword -\u003e StringUtil.containsWordIgnoreCase(member.getName().fullName, keyword));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" if (!(other instanceof NameContainsKeywordsPredicate)) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate otherNameContainsKeywordsPredicate \u003d (NameContainsKeywordsPredicate) other;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return keywords.equals(otherNameContainsKeywordsPredicate.keywords);","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return new ToStringBuilder(this).add(\"keywords\", keywords).toString();","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":5,"-":39}},{"path":"src/main/java/hallpointer/address/model/member/Room.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":" * Represents a Member\u0027s room in the address book.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidRoom(String)}","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"public class Room {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d \"Room should be in the format \u003cblock\u003e/\u003cfloor\u003e/\u003croom_number\u003e\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" * The first character of the address must not be a whitespace,","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALIDATION_REGEX \u003d \"^[0-9]+/[0-9]+/[0-9]+$\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public final String value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" * Constructs an {@code Room}.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" * @param room A valid room.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" public Room(String room) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" checkArgument(isValidRoom(room), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" value \u003d room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if a given string is a valid room.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" public static boolean isValidRoom(String test) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public String toString() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" return value;","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" return true;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // instanceof handles nulls","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof Room)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" return false;","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" Room otherRoom \u003d (Room) other;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" return value.equals(otherRoom.value);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public int hashCode() {","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" return value.hashCode();","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":17,"-":48}},{"path":"src/main/java/hallpointer/address/model/member/Telegram.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":" * Represents a Member\u0027s telegram in the address book.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidTelegram(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"public class Telegram {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" \"Telegram must only contain alphanumeric characters or underscores\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" + \"and be between 5 to 32 characters long\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" + \", starting with a letter and not ending with a underscore\\n\"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" + \"@ is not required as it is implicitly assumed to be there\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALIDATION_REGEX \u003d \"^[a-zA-Z](?:[a-zA-Z0-9]|_(?\u003d.*[a-zA-Z0-9]$)){4,31}$\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" public final String value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" * Constructs a {@code Telegram}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * @param telegram A valid telegram.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" public Telegram(String telegram) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" checkArgument(isValidTelegram(telegram), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" value \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if a given string is a valid telegram.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" public static boolean isValidTelegram(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" return value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof Telegram)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" Telegram otherTelegram \u003d (Telegram) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" return value.equals(otherTelegram.value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" return value.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":64}},{"path":"src/main/java/hallpointer/address/model/member/UniqueMemberList.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import java.util.Iterator;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import java.util.List;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.DuplicateMemberException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.MemberNotFoundException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" * A list of members that enforces uniqueness between its elements and does not allow nulls.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * A member is considered unique by comparing using {@code Member#isSameMember(Member)}. As such, adding and updating of","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" * members uses Member#isSameMember(Member) for equality so as to ensure that the member being added or updated is","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" * unique in terms of identity in the UniqueMemberList. However, the removal of a member uses Member#equals(Object) so","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" * as to ensure that the member with exactly the same fields will be removed.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" *","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" * Supports a minimal set of list operations.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" *","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" * @see Member#isSameMember(Member)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":"public class UniqueMemberList implements Iterable\u003cMember\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" private final ObservableList\u003cMember\u003e internalList \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" private final ObservableList\u003cMember\u003e internalUnmodifiableList \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" FXCollections.unmodifiableObservableList(internalList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if the list contains an equivalent member as the given argument.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" public boolean contains(Member toCheck) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(toCheck);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" return internalList.stream().anyMatch(toCheck::isSameMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" * Adds a member to the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" * The member must not already exist in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" public void add(Member toAdd) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(toAdd);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" if (contains(toAdd)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" throw new DuplicateMemberException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" internalList.add(toAdd);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the member {@code target} in the list with {@code editedMember}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" * {@code target} must exist in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" * The member identity of {@code editedMember} must not be the same as another existing member in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" public void setMember(Member target, Member editedMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" requireAllNonNull(target, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" int index \u003d internalList.indexOf(target);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" if (index \u003d\u003d -1) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" throw new MemberNotFoundException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" if (!target.isSameMember(editedMember) \u0026\u0026 contains(editedMember)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" throw new DuplicateMemberException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" internalList.set(index, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" * Removes the equivalent member from the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" * The member must exist in the list.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" public void remove(Member toRemove) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(toRemove);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" if (!internalList.remove(toRemove)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" throw new MemberNotFoundException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers(UniqueMemberList replacement) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(replacement);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" internalList.setAll(replacement.internalList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" * Replaces the contents of this list with {@code members}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" * {@code members} must not contain duplicate members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers(List\u003cMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" requireAllNonNull(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" if (!membersAreUnique(members)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" throw new DuplicateMemberException();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" internalList.setAll(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"starchypotatocode"},"content":" * Returns the backing list as an unmodifiable {@code ObservableList}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e asUnmodifiableObservableList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" return internalUnmodifiableList;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" public Iterator\u003cMember\u003e iterator() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" return internalList.iterator();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"starchypotatocode"},"content":" return true;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" if (!(other instanceof UniqueMemberList)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" return false;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList otherUniqueMemberList \u003d (UniqueMemberList) other;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"starchypotatocode"},"content":" return internalList.equals(otherUniqueMemberList.internalList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" public int hashCode() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"starchypotatocode"},"content":" return internalList.hashCode();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"starchypotatocode"},"content":" public String toString() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"starchypotatocode"},"content":" return internalList.toString();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"starchypotatocode"},"content":" * Returns true if {@code members} contains only unique members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"starchypotatocode"},"content":" private boolean membersAreUnique(List\u003cMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"starchypotatocode"},"content":" for (int i \u003d 0; i \u003c members.size() - 1; i++) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"starchypotatocode"},"content":" for (int j \u003d i + 1; j \u003c members.size(); j++) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" if (members.get(i).isSameMember(members.get(j))) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"starchypotatocode"},"content":" return false;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"starchypotatocode"},"content":" return true;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":150}},{"path":"src/main/java/hallpointer/address/model/member/exceptions/DuplicateMemberException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member.exceptions;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":" * Signals that the operation will result in duplicate Members (Members are considered duplicates if they have the same","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":" * identity).","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"public class DuplicateMemberException extends RuntimeException {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":" public DuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" super(\"Operation would result in duplicate members\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":11}},{"path":"src/main/java/hallpointer/address/model/member/exceptions/MemberNotFoundException.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member.exceptions;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":" * Signals that the operation is unable to find the specified member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"public class MemberNotFoundException extends RuntimeException {}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":6}},{"path":"src/main/java/hallpointer/address/model/session/Date.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"keithxun"},"content":"package hallpointer.address.model.session;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"keithxun"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"keithxun"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"keithxun"},"content":"import java.time.LocalDate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"keithxun"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"keithxun"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"keithxun"},"content":"/**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":" * Represents a date in the system.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidDate(String)}","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"keithxun"},"content":"public class Date {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"keithxun"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"keithxun"},"content":" \"Dates should be in the format dd MMM yyyy (e.g. 24 Sep 2024)\";","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"keithxun"},"content":" // Desired date format","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"keithxun"},"content":" public static final DateTimeFormatter DATE_FORMATTER \u003d DateTimeFormatter.ofPattern(\"dd MMM yyyy\");","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"keithxun"},"content":" public final LocalDate fullDate;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":" * Constructs a {@code Date}.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"keithxun"},"content":" *","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"keithxun"},"content":" * @param date A valid date string.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"keithxun"},"content":" public Date(String date) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"keithxun"},"content":" requireNonNull(date);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"keithxun"},"content":" checkArgument(isValidDate(date), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":" fullDate \u003d parseDate(date);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"keithxun"},"content":" * Returns true if a given string is a valid date according to the specified format.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"keithxun"},"content":" public static boolean isValidDate(String test) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":" try {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":" DATE_FORMATTER.parse(test);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"keithxun"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"keithxun"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":" * Parses a valid date string into a LocalDate object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":" * @param date A valid date string.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":" * @return A LocalDate object.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":" public static LocalDate parseDate(String date) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":" return LocalDate.parse(date, DATE_FORMATTER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"keithxun"},"content":" * Returns the date as a formatted string.","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":" public String toString() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"keithxun"},"content":" return fullDate.format(DATE_FORMATTER);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"keithxun"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"keithxun"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"keithxun"},"content":" if (!(other instanceof Date)) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"keithxun"},"content":" return false;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"keithxun"},"content":" Date otherDate \u003d (Date) other;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"keithxun"},"content":" return fullDate.equals(otherDate.fullDate);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"keithxun"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"keithxun"},"content":" return fullDate.hashCode();","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"keithxun"},"content":"}","lastModifiedDate":"2024-10-10","isFullCredit":false}],"authorContributionMap":{"keithxun":82}},{"path":"src/main/java/hallpointer/address/model/session/Session.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"keithxun"},"content":"package hallpointer.address.model.session;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"keithxun"},"content":"import static hallpointer.address.commons.util.CollectionUtil.requireAllNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"keithxun"},"content":"import java.util.Collections;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"keithxun"},"content":"import java.util.HashSet;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"keithxun"},"content":"import java.util.Objects;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"keithxun"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"keithxun"},"content":"import hallpointer.address.commons.util.ToStringBuilder;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"keithxun"},"content":" * Represents a Session in the system.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"keithxun"},"content":" * Guarantees: details are present and not null, field values are validated, immutable.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"keithxun"},"content":"public class Session {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"keithxun"},"content":" // Identity fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"keithxun"},"content":" private final SessionName sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"keithxun"},"content":" private final int points;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"keithxun"},"content":" private final Date date;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":" // Data fields","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":" private final Set\u003cMember\u003e members \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"keithxun"},"content":" * Every field must be present and not null.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"keithxun"},"content":" public Session(SessionName sessionName, Date date, int points, Set\u003cMember\u003e members) {","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"keithxun"},"content":" requireAllNonNull(sessionName, date, points, members);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":" this.sessionName \u003d sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"keithxun"},"content":" this.date \u003d date;","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"keithxun"},"content":" this.points \u003d points;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"keithxun"},"content":" this.members.addAll(members);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"keithxun"},"content":" public SessionName getSessionName() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":" return sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"keithxun"},"content":" public int getPoints() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"keithxun"},"content":" return points;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":" * Returns an immutable member set, which throws {@code UnsupportedOperationException}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":" * if modification is attempted.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":" public Set\u003cMember\u003e getMembers() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":" return Collections.unmodifiableSet(members);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"keithxun"},"content":" * Updates the set of members in the session.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"keithxun"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"keithxun"},"content":" * @param newMembers New set of members.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"keithxun"},"content":" public Session updateMembers(Set\u003cMember\u003e newMembers) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":" return new Session(this.sessionName, this.date, this.points, newMembers);","lastModifiedDate":"2024-10-10","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"keithxun"},"content":" * Returns true if both sessions have the same name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"keithxun"},"content":" * This defines a weaker notion of equality between two sessions.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"keithxun"},"content":" public boolean isSameSession(Session otherSession) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"keithxun"},"content":" if (otherSession \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"keithxun"},"content":" return otherSession !\u003d null","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"keithxun"},"content":" \u0026\u0026 otherSession.getSessionName().equals(getSessionName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"keithxun"},"content":" * Returns true if both sessions have the same identity and data fields.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"keithxun"},"content":" * This defines a stronger notion of equality between two sessions.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"keithxun"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"keithxun"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"keithxun"},"content":" if (!(other instanceof Session)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"keithxun"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"keithxun"},"content":" Session otherSession \u003d (Session) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"keithxun"},"content":" return sessionName.equals(otherSession.sessionName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"keithxun"},"content":" \u0026\u0026 points \u003d\u003d otherSession.points","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"keithxun"},"content":" \u0026\u0026 members.equals(otherSession.members);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"keithxun"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"keithxun"},"content":" return Objects.hash(sessionName, points, members);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"keithxun"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"keithxun"},"content":" return new ToStringBuilder(this)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"keithxun"},"content":" .add(\"sessionName\", sessionName)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"keithxun"},"content":" .add(\"points\", points)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"keithxun"},"content":" .add(\"members\", members)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"keithxun"},"content":" .toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"keithxun"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"keithxun":109}},{"path":"src/main/java/hallpointer/address/model/session/SessionName.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"keithxun"},"content":"package hallpointer.address.model.session;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"keithxun"},"content":"import static hallpointer.address.commons.util.AppUtil.checkArgument;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"keithxun"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"keithxun"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"keithxun"},"content":" * Represents a Session\u0027s name in the application.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"keithxun"},"content":" * Guarantees: immutable; is valid as declared in {@link #isValidSessionName(String)}","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"keithxun"},"content":"public class SessionName {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"keithxun"},"content":" public static final String MESSAGE_CONSTRAINTS \u003d","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"keithxun"},"content":" \"Session names should only contain alphanumeric characters and spaces, and it should not be blank\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"keithxun"},"content":" /*","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"keithxun"},"content":" * The first character of the session name must not be a whitespace,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"keithxun"},"content":" * otherwise \" \" (a blank string) becomes a valid input.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"keithxun"},"content":" public static final String VALIDATION_REGEX \u003d \"[\\\\p{Alnum}][\\\\p{Alnum} ]*\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"keithxun"},"content":" public final String sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"keithxun"},"content":" * Constructs a {@code SessionName}.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"keithxun"},"content":" *","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"keithxun"},"content":" * @param name A valid session name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"keithxun"},"content":" public SessionName(String name) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"keithxun"},"content":" requireNonNull(name);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"keithxun"},"content":" checkArgument(isValidSessionName(name), MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"keithxun"},"content":" sessionName \u003d name;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"keithxun"},"content":" /**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"keithxun"},"content":" * Returns true if a given string is a valid session name.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"keithxun"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"keithxun"},"content":" public static boolean isValidSessionName(String test) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"keithxun"},"content":" return test.matches(VALIDATION_REGEX);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"keithxun"},"content":" public String toString() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"keithxun"},"content":" return sessionName;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"keithxun"},"content":" public boolean equals(Object other) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"keithxun"},"content":" if (other \u003d\u003d this) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"keithxun"},"content":" return true;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"keithxun"},"content":" // instanceof handles nulls","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"keithxun"},"content":" if (!(other instanceof SessionName)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"keithxun"},"content":" return false;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"keithxun"},"content":" SessionName otherSessionName \u003d (SessionName) other;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"keithxun"},"content":" return sessionName.equals(otherSessionName.sessionName);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"keithxun"},"content":" @Override","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"keithxun"},"content":" public int hashCode() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"keithxun"},"content":" return sessionName.hashCode();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"keithxun"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"keithxun"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"keithxun"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"keithxun":66}},{"path":"src/main/java/hallpointer/address/model/util/SampleDataUtil.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model.util;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * Contains utility methods for populating {@code AddressBook} with sample data.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class SampleDataUtil {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" public static Member[] getSampleMembers() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" return new Member[] {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Alex Yeoh\"), new Telegram(\"alex_yeoh98\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"12/04/201\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"subcommLeader\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Bernice Yu\"), new Telegram(\"BobLim23\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"5/03/102\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"competitionLeader\", \"achiever\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Charlotte Oliveiro\"), new Telegram(\"oliveiro\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"3/02/301\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"team1\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"David Li\"), new Telegram(\"davidLiOnly\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"14/06/301\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"team3\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Irfan Ibrahim\"), new Telegram(\"ibrahim_irfan\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"3/05/323\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"team2\")),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" new Member(new Name(\"Roy Balakrishnan\"), new Telegram(\"roy_da_bomb\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" new Room(\"8/04/258\"),","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" getTagSet(\"team2\"))","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public static ReadOnlyAddressBook getSampleAddressBook() {","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" AddressBook sampleAb \u003d new AddressBook();","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" for (Member sampleMember : getSampleMembers()) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" sampleAb.addMember(sampleMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" return sampleAb;","lastModifiedDate":"2017-04-07","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-20","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * Returns a tag set containing the list of strings given.","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static Set\u003cTag\u003e getTagSet(String... strings) {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" return Arrays.stream(strings)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .map(Tag::new)","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .collect(Collectors.toSet());","lastModifiedDate":"2018-01-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-20","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":26,"-":33}},{"path":"src/main/java/hallpointer/address/storage/JsonAdaptedMember.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" * Jackson-friendly version of {@link Member}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"class JsonAdaptedMember {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" public static final String MISSING_FIELD_MESSAGE_FORMAT \u003d \"Member\u0027s %s field is missing!\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private final String name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" private final String telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" private final String room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" private final List\u003cJsonAdaptedTag\u003e tags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" * Constructs a {@code JsonAdaptedMember} with the given member details.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" public JsonAdaptedMember(@JsonProperty(\"name\") String name, @JsonProperty(\"telegram\") String telegram,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" @JsonProperty(\"room\") String room,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @JsonProperty(\"tags\") List\u003cJsonAdaptedTag\u003e tags) {","lastModifiedDate":"2023-05-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" this.name \u003d name;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" this.telegram \u003d telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" this.room \u003d room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" if (tags !\u003d null) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" this.tags.addAll(tags);","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" * Converts a given {@code Member} into this class for Jackson use.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" public JsonAdaptedMember(Member source) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" name \u003d source.getName().fullName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" telegram \u003d source.getTelegram().value;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" room \u003d source.getRoom().value;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" tags.addAll(source.getTags().stream()","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" .collect(Collectors.toList()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" * Converts this Jackson-friendly adapted member object into the model\u0027s {@code Member} object.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" * @throws IllegalValueException if there were any data constraints violated in the adapted member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" public Member toModelType() throws IllegalValueException {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" final List\u003cTag\u003e memberTags \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" for (JsonAdaptedTag tag : tags) {","lastModifiedDate":"2023-01-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" memberTags.add(tag.toModelType());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" if (name \u003d\u003d null) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" if (!Name.isValidName(name)) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" throw new IllegalValueException(Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" final Name modelName \u003d new Name(name);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" if (telegram \u003d\u003d null) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" Telegram.class.getSimpleName()));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" if (!Telegram.isValidTelegram(telegram)) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" final Telegram modelTelegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" if (room \u003d\u003d null) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Room.class.getSimpleName()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" if (!Room.isValidRoom(room)) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(Room.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" final Room modelRoom \u003d new Room(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" final Set\u003cTag\u003e modelTags \u003d new HashSet\u003c\u003e(memberTags);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":" return new Member(modelName, modelTelegram, modelRoom, modelTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":36,"-":62}},{"path":"src/main/java/hallpointer/address/storage/JsonSerializableAddressBook.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonCreator;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonProperty;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import com.fasterxml.jackson.annotation.JsonRootName;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * An Immutable AddressBook that is serializable to JSON format.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"@JsonRootName(value \u003d \"addressbook\")","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"class JsonSerializableAddressBook {","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" public static final String MESSAGE_DUPLICATE_MEMBER \u003d \"Members list contains duplicate member(s).\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private final List\u003cJsonAdaptedMember\u003e members \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" * Constructs a {@code JsonSerializableAddressBook} with the given members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @JsonCreator","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public JsonSerializableAddressBook(@JsonProperty(\"members\") List\u003cJsonAdaptedMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" this.members.addAll(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" * Converts a given {@code ReadOnlyAddressBook} into this class for Jackson use.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * @param source future changes to this will not affect the created {@code JsonSerializableAddressBook}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public JsonSerializableAddressBook(ReadOnlyAddressBook source) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" members.addAll(source.getMemberList().stream().map(JsonAdaptedMember::new).collect(Collectors.toList()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" * Converts this address book into the model\u0027s {@code AddressBook} object.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" * @throws IllegalValueException if there were any data constraints violated.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public AddressBook toModelType() throws IllegalValueException {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" for (JsonAdaptedMember jsonAdaptedMember : members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d jsonAdaptedMember.toModelType();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" if (addressBook.hasMembers(member)) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" throw new IllegalValueException(MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":12,"-":48}},{"path":"src/main/java/hallpointer/address/ui/HelpWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Button;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.input.Clipboard;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.input.ClipboardContent;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" * Controller for a help page","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class HelpWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public static final String USERGUIDE_URL \u003d \"https://ay2425s1-cs2103t-w14-3.github.io/tp/UserGuide.html\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public static final String HELP_MESSAGE \u003d \"Refer to the user guide: \" + USERGUIDE_URL;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-03","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private static final Logger logger \u003d LogsCenter.getLogger(HelpWindow.class);","lastModifiedDate":"2016-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"HelpWindow.fxml\";","lastModifiedDate":"2016-09-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Button copyButton;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Label helpMessage;","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" * @param root Stage to use as the root of the HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public HelpWindow(Stage root) {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" super(FXML, root);","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" helpMessage.setText(HELP_MESSAGE);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * Creates a new HelpWindow.","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public HelpWindow() {","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" this(new Stage());","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-01","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" * Shows the help window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" * @throws IllegalStateException","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" * \u003cul\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" * if this method is called on a thread other than the JavaFX Application Thread.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * if this method is called during animation or layout processing.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" * if this method is called on the primary stage.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" * \u003cli\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" * if {@code dialogStage} is already showing.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" * \u003c/li\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" * \u003c/ul\u003e","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public void show() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" logger.fine(\"Showing help page about the application.\");","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" getRoot().show();","lastModifiedDate":"2018-02-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" getRoot().centerOnScreen();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" * Returns true if the help window is currently being shown.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" public boolean isShowing() {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" return getRoot().isShowing();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" * Hides the help window.","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void hide() {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" getRoot().hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" * Focuses on the help window.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void focus() {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" getRoot().requestFocus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * Copies the URL to the user guide to the clipboard.","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" private void copyUrl() {","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" final Clipboard clipboard \u003d Clipboard.getSystemClipboard();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" final ClipboardContent url \u003d new ClipboardContent();","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" url.putString(USERGUIDE_URL);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" clipboard.setContent(url);","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-08-19","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":101}},{"path":"src/main/java/hallpointer/address/ui/MainWindow.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.CommandResult;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import javafx.event.ActionEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import javafx.scene.control.MenuItem;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import javafx.scene.control.TextInputControl;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyCombination;","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import javafx.scene.input.KeyEvent;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import javafx.scene.layout.StackPane;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import javafx.stage.Stage;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * The Main Window. Provides the basic application layout containing","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * a menu bar and space where other JavaFX elements can be placed.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"public class MainWindow extends UiPart\u003cStage\u003e {","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"MainWindow.fxml\";","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private final Logger logger \u003d LogsCenter.getLogger(getClass());","lastModifiedDate":"2018-08-14","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private Stage primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // Independent Ui parts residing in this Ui container","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" private MemberListPanel memberListPanel;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" private ResultDisplay resultDisplay;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private HelpWindow helpWindow;","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" private StackPane commandBoxPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private MenuItem helpMenuItem;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" private StackPane memberListPanelPlaceholder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" private StackPane resultDisplayPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" private StackPane statusbarPlaceholder;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * Creates a {@code MainWindow} with the given {@code Stage} and {@code Logic}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public MainWindow(Stage primaryStage, Logic logic) {","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" super(FXML, primaryStage);","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // Set dependencies","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" this.primaryStage \u003d primaryStage;","lastModifiedDate":"2016-12-02","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" this.logic \u003d logic;","lastModifiedDate":"2016-09-25","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Configure the UI","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" setWindowDefaultSize(logic.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" setAccelerators();","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" helpWindow \u003d new HelpWindow();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" public Stage getPrimaryStage() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" return primaryStage;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" private void setAccelerators() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" setAccelerator(helpMenuItem, KeyCombination.valueOf(\"F1\"));","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" * Sets the accelerator of a MenuItem.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" * @param keyCombination the KeyCombination value of the accelerator","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" menuItem.setAccelerator(keyCombination);","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" * TODO: the code below can be removed once the bug reported here","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" * https://bugs.openjdk.java.net/browse/JDK-8131666","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" * is fixed in later version of SDK.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" * According to the bug report, TextInputControl (TextField, TextArea) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * consume function-key events. Because CommandBox contains a TextField, and","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * ResultDisplay contains a TextArea, thus some accelerators (e.g F1) will","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * not work when the focus is in them because the key event is consumed by","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * the TextInputControl(s).","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" * For now, we add following event filter to capture such key events and open","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" * help window purposely so to support accelerators even when focus is","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" * in CommandBox or ResultDisplay.","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" getRoot().addEventFilter(KeyEvent.KEY_PRESSED, event -\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" if (event.getTarget() instanceof TextInputControl \u0026\u0026 keyCombination.match(event)) {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" menuItem.getOnAction().handle(new ActionEvent());","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" event.consume();","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" });","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" * Fills up all the placeholders of this window.","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" void fillInnerParts() {","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" memberListPanel \u003d new MemberListPanel(logic.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" memberListPanelPlaceholder.getChildren().add(memberListPanel.getRoot());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" resultDisplay \u003d new ResultDisplay();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" StatusBarFooter statusBarFooter \u003d new StatusBarFooter(logic.getAddressBookFilePath());","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" statusbarPlaceholder.getChildren().add(statusBarFooter.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" CommandBox commandBox \u003d new CommandBox(this::executeCommand);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" commandBoxPlaceholder.getChildren().add(commandBox.getRoot());","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" * Sets the default size based on {@code guiSettings}.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" private void setWindowDefaultSize(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" primaryStage.setHeight(guiSettings.getWindowHeight());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" primaryStage.setWidth(guiSettings.getWindowWidth());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" if (guiSettings.getWindowCoordinates() !\u003d null) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" primaryStage.setX(guiSettings.getWindowCoordinates().getX());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" primaryStage.setY(guiSettings.getWindowCoordinates().getY());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Opens the help window or focuses on it if it\u0027s already opened.","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void handleHelp() {","lastModifiedDate":"2016-08-31","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" if (!helpWindow.isShowing()) {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" helpWindow.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" helpWindow.focus();","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-15","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" void show() {","lastModifiedDate":"2016-10-15","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" primaryStage.show();","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" * Closes the application.","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" private void handleExit() {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(primaryStage.getWidth(), primaryStage.getHeight(),","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" (int) primaryStage.getX(), (int) primaryStage.getY());","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" logic.setGuiSettings(guiSettings);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" helpWindow.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" primaryStage.hide();","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"starchypotatocode"},"content":" public MemberListPanel getMemberListPanel() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" return memberListPanel;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-25","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" * Executes the command and returns the result.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" * @see hallpointer.address.logic.Logic#execute(String)","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" private CommandResult executeCommand(String commandText) throws CommandException, ParseException {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":" CommandResult commandResult \u003d logic.execute(commandText);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" logger.info(\"Result: \" + commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(commandResult.getFeedbackToUser());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" if (commandResult.isShowHelp()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" handleHelp();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" if (commandResult.isExit()) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":" handleExit();","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" return commandResult;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" } catch (CommandException | ParseException e) {","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":" logger.info(\"An error occurred while executing command: \" + commandText);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" resultDisplay.setFeedbackToUser(e.getMessage());","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":6,"-":190}},{"path":"src/main/java/hallpointer/address/ui/MemberCard.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.Comparator;","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.FlowPane;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import javafx.scene.layout.HBox;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" * An UI component that displays information of a {@code Member}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"public class MemberCard extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" private static final String FXML \u003d \"MemberListCard.fxml\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" * Note: Certain keywords such as \"location\" and \"resources\" are reserved keywords in JavaFX.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * As a consequence, UI elements\u0027 variable names cannot be set to such keywords","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" * or an exception will be thrown by JavaFX during runtime.","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * @see \u003ca href\u003d\"https://github.com/se-edu/addressbook-level4/issues/336\"\u003eThe issue on AddressBook level 4\u003c/a\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" public final Member member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" private HBox cardPane;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Label name;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private Label id;","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" private Label telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" private Label room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private FlowPane tags;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" * Creates a {@code MemberCode} with the given {@code Member} and index to display.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" public MemberCard(Member member, int displayedIndex) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" this.member \u003d member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" id.setText(displayedIndex + \". \");","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" name.setText(member.getName().fullName);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" telegram.setText(member.getTelegram().value);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" room.setText(member.getRoom().value);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" member.getTags().stream()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" .sorted(Comparator.comparing(tag -\u003e tag.tagName))","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" .forEach(tag -\u003e tags.getChildren().add(new Label(tag.tagName)));","lastModifiedDate":"2019-01-02","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":14,"-":42}},{"path":"src/main/java/hallpointer/address/ui/MemberListPanel.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import java.util.logging.Logger;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.commons.core.LogsCenter;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import javafx.scene.control.ListCell;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import javafx.scene.control.ListView;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * Panel containing the list of members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"public class MemberListPanel extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" private static final String FXML \u003d \"MemberListPanel.fxml\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" private final Logger logger \u003d LogsCenter.getLogger(MemberListPanel.class);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" @FXML","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private ListView\u003cMember\u003e memberListView;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * Creates a {@code MemberListPanel} with the given {@code ObservableList}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" public MemberListPanel(ObservableList\u003cMember\u003e memberList) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" super(FXML);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" memberListView.setItems(memberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" memberListView.setCellFactory(listView -\u003e new MemberListViewCell());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" /**","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" * Custom {@code ListCell} that displays the graphics of a {@code Member} using a {@code MemberCard}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" class MemberListViewCell extends ListCell\u003cMember\u003e {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" @Override","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" protected void updateItem(Member member, boolean empty) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" super.updateItem(member, empty);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" if (empty || member \u003d\u003d null) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" setGraphic(null);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" setText(null);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" } else {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" setGraphic(new MemberCard(member, getIndex() + 1).getRoot());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":49}},{"path":"src/main/java/hallpointer/address/ui/StatusBarFooter.java","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.ui;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import javafx.fxml.FXML;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import javafx.scene.control.Label;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import javafx.scene.layout.Region;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" * An ui for the status bar that is displayed at the footer of the application.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class StatusBarFooter extends UiPart\u003cRegion\u003e {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-14","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" private static final String FXML \u003d \"StatusBarFooter.fxml\";","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @FXML","lastModifiedDate":"2016-12-10","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private Label saveLocationStatus;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" * Creates a {@code StatusBarFooter} with the given {@code Path}.","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public StatusBarFooter(Path saveLocation) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" super(FXML);","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" saveLocationStatus.setText(Paths.get(\".\").resolve(saveLocation).toString());","lastModifiedDate":"2018-12-03","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":27}},{"path":"src/main/resources/view/DarkTheme.css","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":".background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":" background-color: #383838; /* Used in the default.html file */","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":".label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":" -fx-text-fill: #555555;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":".label-bright {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":".label-header {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" -fx-font-size: 32pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":".text-field {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" -fx-font-size: 12pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":".tab-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":".tab-pane .tab-header-area {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" -fx-min-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" -fx-max-height: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":".table-view {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" -fx-base: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -fx-control-inner-background: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" -fx-table-cell-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" -fx-table-header-border-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" -fx-padding: 5;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":".table-view .column-header-background {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":".table-view .column-header, .table-view .filler {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" -fx-size: 35;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" -fx-border-width: 0 0 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" -fx-border-color:","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" transparent","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" derive(-fx-base, 80%)","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" -fx-border-insets: 0 10 1 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":".table-view .column-header .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" -fx-font-size: 20pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" -fx-alignment: center-left;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" -fx-opacity: 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":".table-view:focused .table-row-cell:filled:focused:selected {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":".split-pane:horizontal .split-pane-divider {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" -fx-border-color: transparent transparent transparent #4d4d4d;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":".split-pane {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" -fx-border-radius: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":".list-view {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" -fx-padding: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":".list-cell {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" -fx-label-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" -fx-graphic-text-gap : 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":".list-cell:filled:even {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" -fx-background-color: #3c3e3f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":".list-cell:filled:odd {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" -fx-background-color: #515658;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":".list-cell:filled:selected {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" -fx-background-color: #424d5f;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":".list-cell:filled:selected #cardPane {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" -fx-border-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":".list-cell .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":".cell_big_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Semibold\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" -fx-font-size: 16px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":".cell_small_label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" -fx-font-size: 13px;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" -fx-text-fill: #010504;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":".stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":".pane-with-border {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 10%);","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" -fx-border-top-width: 1px;","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":".status-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":".result-display {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":".result-display .label {","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" -fx-text-fill: black !important;","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":".status-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" -fx-padding: 4px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" -fx-pref-height: 30px;","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":".status-bar-with-border {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":".status-bar-with-border .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"-"},"content":".grid-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" -fx-border-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" -fx-border-width: 1px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":".grid-pane .stack-pane {","lastModifiedDate":"2018-04-01","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 30%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":".context-menu {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":".context-menu .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":".menu-bar {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":".menu-bar .label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"-"},"content":" -fx-font-size: 14pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" -fx-opacity: 0.9;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":".menu .left-container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" -fx-background-color: black;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"/*","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":" * Metro style Push Button","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":212,"author":{"gitId":"-"},"content":" * Author: Pedro Duque Vieira","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":213,"author":{"gitId":"-"},"content":" * http://pixelduke.wordpress.com/2012/10/23/jmetro-windows-8-controls-on-java/","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":214,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":215,"author":{"gitId":"-"},"content":".button {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":216,"author":{"gitId":"-"},"content":" -fx-padding: 5 22 5 22;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":217,"author":{"gitId":"-"},"content":" -fx-border-color: #e2e2e2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":218,"author":{"gitId":"-"},"content":" -fx-border-width: 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":219,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":220,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":221,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI\", Helvetica, Arial, sans-serif;","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":222,"author":{"gitId":"-"},"content":" -fx-font-size: 11pt;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":223,"author":{"gitId":"-"},"content":" -fx-text-fill: #d8d8d8;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":224,"author":{"gitId":"-"},"content":" -fx-background-insets: 0 0 0 0, 0, 1, 2;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":225,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":226,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":227,"author":{"gitId":"-"},"content":".button:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":228,"author":{"gitId":"-"},"content":" -fx-background-color: #3a3a3a;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":229,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":230,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":231,"author":{"gitId":"-"},"content":".button:pressed, .button:default:hover:pressed {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":232,"author":{"gitId":"-"},"content":" -fx-background-color: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":233,"author":{"gitId":"-"},"content":" -fx-text-fill: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":234,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":235,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":236,"author":{"gitId":"-"},"content":".button:focused {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":237,"author":{"gitId":"-"},"content":" -fx-border-color: white, white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":238,"author":{"gitId":"-"},"content":" -fx-border-width: 1, 1;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":239,"author":{"gitId":"-"},"content":" -fx-border-style: solid, segments(1, 1);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":240,"author":{"gitId":"-"},"content":" -fx-border-radius: 0, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":241,"author":{"gitId":"-"},"content":" -fx-border-insets: 1 1 1 1, 0;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":242,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":243,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":244,"author":{"gitId":"-"},"content":".button:disabled, .button:default:disabled {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":245,"author":{"gitId":"-"},"content":" -fx-opacity: 0.4;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":246,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":247,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":248,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":249,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":250,"author":{"gitId":"-"},"content":".button:default {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":251,"author":{"gitId":"-"},"content":" -fx-background-color: -fx-focus-color;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":252,"author":{"gitId":"-"},"content":" -fx-text-fill: #ffffff;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":253,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":254,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":255,"author":{"gitId":"-"},"content":".button:default:hover {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":256,"author":{"gitId":"-"},"content":" -fx-background-color: derive(-fx-focus-color, 30%);","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":257,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":258,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":259,"author":{"gitId":"-"},"content":".dialog-pane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":260,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":261,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":262,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":263,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.button-bar \u003e *.container {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":264,"author":{"gitId":"-"},"content":" -fx-background-color: #1d1d1d;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":265,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":266,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":267,"author":{"gitId":"-"},"content":".dialog-pane \u003e *.label.content {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":268,"author":{"gitId":"-"},"content":" -fx-font-size: 14px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":269,"author":{"gitId":"-"},"content":" -fx-font-weight: bold;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":270,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":271,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":272,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":273,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":274,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 25%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":275,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":276,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":277,"author":{"gitId":"-"},"content":".dialog-pane:header *.header-panel *.label {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":278,"author":{"gitId":"-"},"content":" -fx-font-size: 18px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":279,"author":{"gitId":"-"},"content":" -fx-font-style: italic;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":280,"author":{"gitId":"-"},"content":" -fx-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":281,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":282,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":283,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":284,"author":{"gitId":"-"},"content":".scroll-bar {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":285,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 20%);","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":286,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":287,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":288,"author":{"gitId":"-"},"content":".scroll-bar .thumb {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":289,"author":{"gitId":"-"},"content":" -fx-background-color: derive(#1d1d1d, 50%);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":290,"author":{"gitId":"-"},"content":" -fx-background-insets: 3;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":291,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":292,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":293,"author":{"gitId":"-"},"content":".scroll-bar .increment-button, .scroll-bar .decrement-button {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":294,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":295,"author":{"gitId":"-"},"content":" -fx-padding: 0 0 0 0;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":296,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":297,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":298,"author":{"gitId":"-"},"content":".scroll-bar .increment-arrow, .scroll-bar .decrement-arrow {","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":299,"author":{"gitId":"-"},"content":" -fx-shape: \" \";","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":300,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":301,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":302,"author":{"gitId":"-"},"content":".scroll-bar:vertical .increment-arrow, .scroll-bar:vertical .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":303,"author":{"gitId":"-"},"content":" -fx-padding: 1 8 1 8;","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":304,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":305,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":306,"author":{"gitId":"-"},"content":".scroll-bar:horizontal .increment-arrow, .scroll-bar:horizontal .decrement-arrow {","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":307,"author":{"gitId":"-"},"content":" -fx-padding: 8 1 8 1;","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":308,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":309,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-18","isFullCredit":false},{"lineNumber":310,"author":{"gitId":"-"},"content":"#cardPane {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":311,"author":{"gitId":"-"},"content":" -fx-background-color: transparent;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":312,"author":{"gitId":"-"},"content":" -fx-border-width: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":313,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":314,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":315,"author":{"gitId":"-"},"content":"#commandTypeLabel {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":316,"author":{"gitId":"-"},"content":" -fx-font-size: 11px;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":317,"author":{"gitId":"-"},"content":" -fx-text-fill: #F70D1A;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":318,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":319,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":320,"author":{"gitId":"-"},"content":"#commandTextField {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":321,"author":{"gitId":"-"},"content":" -fx-background-color: transparent #383838 transparent #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":322,"author":{"gitId":"-"},"content":" -fx-background-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":323,"author":{"gitId":"-"},"content":" -fx-border-color: #383838 #383838 #ffffff #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":324,"author":{"gitId":"-"},"content":" -fx-border-insets: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":325,"author":{"gitId":"-"},"content":" -fx-border-width: 1;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":326,"author":{"gitId":"-"},"content":" -fx-font-family: \"Segoe UI Light\";","lastModifiedDate":"2022-01-13","isFullCredit":false},{"lineNumber":327,"author":{"gitId":"-"},"content":" -fx-font-size: 13pt;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":328,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":329,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":330,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":331,"author":{"gitId":"starchypotatocode"},"content":"#filterField, #memberListPanel, #memberWebpage {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":332,"author":{"gitId":"-"},"content":" -fx-effect: innershadow(gaussian, black, 10, 0, 0, 0);","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":333,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":334,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":335,"author":{"gitId":"-"},"content":"#resultDisplay .content {","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":336,"author":{"gitId":"-"},"content":" -fx-background-color: transparent, #383838, transparent, #383838;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":337,"author":{"gitId":"-"},"content":" -fx-background-radius: 0;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":338,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":339,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":340,"author":{"gitId":"-"},"content":"#tags {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":341,"author":{"gitId":"-"},"content":" -fx-hgap: 7;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":342,"author":{"gitId":"-"},"content":" -fx-vgap: 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":343,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":344,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":345,"author":{"gitId":"-"},"content":"#tags .label {","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":346,"author":{"gitId":"-"},"content":" -fx-text-fill: white;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":347,"author":{"gitId":"-"},"content":" -fx-background-color: #3e7b91;","lastModifiedDate":"2017-03-02","isFullCredit":false},{"lineNumber":348,"author":{"gitId":"-"},"content":" -fx-padding: 1 3 1 3;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":349,"author":{"gitId":"-"},"content":" -fx-border-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":350,"author":{"gitId":"-"},"content":" -fx-background-radius: 2;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":351,"author":{"gitId":"-"},"content":" -fx-font-size: 11;","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":352,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-18","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":351}},{"path":"src/main/resources/view/MainWindow.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import java.net.URL?\u003e","lastModifiedDate":"2016-08-26","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Menu?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuBar?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.MenuItem?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.image.Image?\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.StackPane?\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.Scene?\u003e","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"\u003c?import javafx.stage.Stage?\u003e","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"\u003cfx:root type\u003d\"javafx.stage.Stage\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" title\u003d\"Address App\" minWidth\u003d\"450\" minHeight\u003d\"600\" onCloseRequest\u003d\"#handleExit\"\u003e","lastModifiedDate":"2018-12-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003cicons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cImage url\u003d\"@/images/address_book_32.png\" /\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003c/icons\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cscene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003cScene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cstylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@DarkTheme.css\" /\u003e","lastModifiedDate":"2016-08-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cURL value\u003d\"@Extensions.css\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c/stylesheets\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003cVBox\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003cMenuBar fx:id\u003d\"menuBar\" VBox.vgrow\u003d\"NEVER\"\u003e","lastModifiedDate":"2017-06-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"File\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003cMenuItem mnemonicParsing\u003d\"false\" onAction\u003d\"#handleExit\" text\u003d\"Exit\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" \u003cMenu mnemonicParsing\u003d\"false\" text\u003d\"Help\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" \u003cMenuItem fx:id\u003d\"helpMenuItem\" mnemonicParsing\u003d\"false\" onAction\u003d\"#handleHelp\" text\u003d\"Help\" /\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/Menu\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/MenuBar\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"commandBoxPlaceholder\" styleClass\u003d\"pane-with-border\"\u003e","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" \u003cStackPane VBox.vgrow\u003d\"NEVER\" fx:id\u003d\"resultDisplayPlaceholder\" styleClass\u003d\"pane-with-border\"","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" minHeight\u003d\"100\" prefHeight\u003d\"100\" maxHeight\u003d\"100\"\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"10\" bottom\u003d\"5\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-09-14","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" \u003c/StackPane\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" \u003cVBox fx:id\u003d\"memberList\" styleClass\u003d\"pane-with-border\" minWidth\u003d\"340\" prefWidth\u003d\"340\" VBox.vgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"10\" right\u003d\"10\" bottom\u003d\"10\" left\u003d\"10\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" \u003cStackPane fx:id\u003d\"memberListPanelPlaceholder\" VBox.vgrow\u003d\"ALWAYS\"/\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" \u003cStackPane fx:id\u003d\"statusbarPlaceholder\" VBox.vgrow\u003d\"NEVER\" /\u003e","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" \u003c/Scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" \u003c/scene\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"\u003c/fx:root\u003e","lastModifiedDate":"2017-11-29","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":2,"-":57}},{"path":"src/main/resources/view/MemberListCard.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.geometry.Insets?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.Label?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.ColumnConstraints?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.FlowPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.GridPane?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.HBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.Region?\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"\u003cHBox id\u003d\"cardPane\" fx:id\u003d\"cardPane\" xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" \u003cGridPane HBox.hgrow\u003d\"ALWAYS\"\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" \u003ccolumnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" \u003cColumnConstraints hgrow\u003d\"SOMETIMES\" minWidth\u003d\"10\" prefWidth\u003d\"150\" /\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" \u003c/columnConstraints\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" \u003cVBox alignment\u003d\"CENTER_LEFT\" minHeight\u003d\"105\" GridPane.columnIndex\u003d\"0\"\u003e","lastModifiedDate":"2017-03-28","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" \u003cpadding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" \u003cInsets top\u003d\"5\" right\u003d\"5\" bottom\u003d\"5\" left\u003d\"15\" /\u003e","lastModifiedDate":"2017-03-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" \u003c/padding\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" \u003cHBox spacing\u003d\"0.5\" alignment\u003d\"CENTER_LEFT\"\u003e","lastModifiedDate":"2024-06-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"id\" styleClass\u003d\"cell_big_label\"\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" \u003cminWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" \u003c!-- Ensures that the label text is never truncated --\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" \u003cRegion fx:constant\u003d\"USE_PREF_SIZE\" /\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" \u003c/minWidth\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" \u003c/Label\u003e","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" \u003cLabel fx:id\u003d\"name\" text\u003d\"\\$first\" styleClass\u003d\"cell_big_label\" /\u003e","lastModifiedDate":"2016-08-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" \u003c/HBox\u003e","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" \u003cFlowPane fx:id\u003d\"tags\" /\u003e","lastModifiedDate":"2016-12-18","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" \u003cLabel fx:id\u003d\"telegram\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$telegram\" /\u003e","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" \u003cLabel fx:id\u003d\"room\" styleClass\u003d\"cell_small_label\" text\u003d\"\\$room\" /\u003e","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" \u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" \u003c/GridPane\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"\u003c/HBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":2,"-":32}},{"path":"src/main/resources/view/MemberListPanel.fxml","fileType":"functional-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"\u003c?xml version\u003d\"1.0\" encoding\u003d\"UTF-8\"?\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.control.ListView?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"\u003c?import javafx.scene.layout.VBox?\u003e","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"\u003cVBox xmlns\u003d\"http://javafx.com/javafx/17\" xmlns:fx\u003d\"http://javafx.com/fxml/1\"\u003e","lastModifiedDate":"2023-07-27","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":" \u003cListView fx:id\u003d\"memberListView\" VBox.vgrow\u003d\"ALWAYS\" /\u003e","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"\u003c/VBox\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":6}},{"path":"src/test/java/hallpointer/address/commons/core/index/IndexTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.commons.core.index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class IndexTest {","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" public void createOneBasedIndex() {","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromOneBased(0));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromOneBased(1).getOneBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromOneBased(5).getOneBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" // convert from one-based index to zero-based index","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromOneBased(1).getZeroBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" assertEquals(4, Index.fromOneBased(5).getZeroBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" public void createZeroBasedIndex() {","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // invalid index","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertThrows(IndexOutOfBoundsException.class, () -\u003e Index.fromZeroBased(-1));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // check equality using the same base","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" assertEquals(0, Index.fromZeroBased(0).getZeroBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertEquals(5, Index.fromZeroBased(5).getZeroBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // convert from zero-based index to one-based index","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertEquals(1, Index.fromZeroBased(0).getOneBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertEquals(6, Index.fromZeroBased(5).getOneBased());","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" final Index fifthMemberIndex \u003d Index.fromOneBased(5);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(fifthMemberIndex.equals(Index.fromOneBased(5)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(fifthMemberIndex.equals(Index.fromZeroBased(4)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(fifthMemberIndex.equals(fifthMemberIndex));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(fifthMemberIndex.equals(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(fifthMemberIndex.equals(5.0f));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(fifthMemberIndex.equals(Index.fromOneBased(1)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromZeroBased(0);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" String expected \u003d Index.class.getCanonicalName() + \"{zeroBasedIndex\u003d\" + index.getZeroBased() + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertEquals(expected, index.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":7,"-":60}},{"path":"src/test/java/hallpointer/address/logic/LogicManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.AMY;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.AccessDeniedException;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.CommandResult;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.ListMembersCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.JsonAddressBookStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.JsonUserPrefsStorage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import hallpointer.address.storage.StorageManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"public class LogicManagerTest {","lastModifiedDate":"2016-09-22","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_IO_EXCEPTION \u003d new IOException(\"dummy IO exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private static final IOException DUMMY_AD_EXCEPTION \u003d new AccessDeniedException(\"dummy access denied exception\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public Path temporaryFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" private Logic logic;","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(temporaryFolder.resolve(\"addressBook.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(temporaryFolder.resolve(\"userPrefs.json\"));","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" public void execute_invalidCommandFormat_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" String invalidCommand \u003d \"uicfhmowqewca\";","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND);","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" public void execute_commandExecutionError_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":" String deleteCommand \u003d \"delete_member 9\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" assertCommandException(deleteCommand, MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void execute_validCommand_success() throws Exception {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"taggyhan"},"content":" String listCommand \u003d ListMembersCommand.COMMAND_WORD;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"taggyhan"},"content":" CommandResult result \u003d logic.execute(listCommand);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"taggyhan"},"content":" System.out.println(result.getFeedbackToUser());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"taggyhan"},"content":" assertCommandSuccess(listCommand, ListMembersCommand.MESSAGE_SUCCESS, model);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-20","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" public void execute_storageThrowsIoException_throwsCommandException() {","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_IO_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_ERROR_FORMAT, DUMMY_IO_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" public void execute_storageThrowsAdException_throwsCommandException() {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertCommandFailureForExceptionFromStorage(DUMMY_AD_EXCEPTION, String.format(","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" LogicManager.FILE_OPS_PERMISSION_ERROR_FORMAT, DUMMY_AD_EXCEPTION.getMessage()));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" public void getFilteredMemberList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e logic.getFilteredMemberList().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" * - no exceptions are thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * - the feedback message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private void assertCommandSuccess(String inputCommand, String expectedMessage,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" Model expectedModel) throws CommandException, ParseException {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" CommandResult result \u003d logic.execute(inputCommand);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" assertEquals(expectedMessage, result.getFeedbackToUser());","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a ParseException is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" private void assertParseException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, ParseException.class, expectedMessage);","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" * Executes the command, confirms that a CommandException is thrown and that the result message is correct.","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" private void assertCommandException(String inputCommand, String expectedMessage) {","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, CommandException.class, expectedMessage);","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-14","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" * Executes the command, confirms that the exception is thrown and that the result message is correct.","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" * @see #assertCommandFailure(String, Class, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-03-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" String expectedMessage) {","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertCommandFailure(inputCommand, expectedException, expectedMessage, expectedModel);","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-02-05","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" * Executes the command and confirms that","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" * - the {@code expectedException} is thrown \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" * - the resulting error message is equal to {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" * - the internal model manager state is the same as that in {@code expectedModel} \u003cbr\u003e","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" * @see #assertCommandSuccess(String, String, Model)","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" private void assertCommandFailure(String inputCommand, Class\u003c? extends Throwable\u003e expectedException,","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" String expectedMessage, Model expectedModel) {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertThrows(expectedException, expectedMessage, () -\u003e logic.execute(inputCommand));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, model);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-21","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-19","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" * Tests the Logic component\u0027s handling of an {@code IOException} thrown by the Storage component.","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" *","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" * @param e the exception to be thrown by the Storage component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" * @param expectedMessage the message expected inside exception thrown by the Logic component","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" private void assertCommandFailureForExceptionFromStorage(IOException e, String expectedMessage) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Path prefPath \u003d temporaryFolder.resolve(\"ExceptionUserPrefs.json\");","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" // Inject LogicManager with an AddressBookStorage that throws the IOException e when saving","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(prefPath) {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath)","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" throws IOException {","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" throw e;","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" };","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" new JsonUserPrefsStorage(temporaryFolder.resolve(\"ExceptionUserPrefs.json\"));","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" StorageManager storage \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" logic \u003d new LogicManager(model, storage);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" // Triggers the saveAddressBook method by executing an add command","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"starchypotatocode"},"content":" String addCommand \u003d AddMemberCommand.COMMAND_WORD + NAME_DESC_AMY + TELEGRAM_DESC_AMY","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"starchypotatocode"},"content":" + ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"starchypotatocode"},"content":" Member expectedMember \u003d new MemberBuilder(AMY).withTags().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager();","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.addMember(expectedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":" assertCommandFailure(addCommand, CommandException.class, expectedMessage, expectedModel);","lastModifiedDate":"2023-06-13","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-21","isFullCredit":false}],"authorContributionMap":{"taggyhan":6,"starchypotatocode":14,"-":156}},{"path":"src/test/java/hallpointer/address/logic/commands/AddMemberCommandIntegrationTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" * Contains integration tests (interaction with the Model) for {@code AddMemberCommand}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommandIntegrationTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" public void execute_newMember_success() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" Member validMember \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.addMember(validMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(new AddMemberCommand(validMember), model,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"taggyhan"},"content":" String.format(AddMemberCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"taggyhan"},"content":" validMember.getName().fullName,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"taggyhan"},"content":" validMember.getRoom().value,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"taggyhan"},"content":" validMember.getTelegram().value),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" expectedModel);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" public void execute_duplicateMember_throwsCommandException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" Member memberInList \u003d model.getAddressBook().getMemberList().get(0);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(new AddMemberCommand(memberInList), model,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand.MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"taggyhan":4,"starchypotatocode":13,"-":33}},{"path":"src/test/java/hallpointer/address/logic/commands/AddMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static java.util.Objects.requireNonNull;","lastModifiedDate":"2018-01-10","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.function.Predicate;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyUserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e new AddMemberCommand(null));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" public void execute_memberAcceptedByModel_addSuccessful() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" ModelStubAcceptingMemberAdded modelStub \u003d new ModelStubAcceptingMemberAdded();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" Member validMember \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" CommandResult commandResult \u003d new AddMemberCommand(validMember).execute(modelStub);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"taggyhan"},"content":" assertEquals(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":" String.format(","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"taggyhan"},"content":" AddMemberCommand.MESSAGE_SUCCESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"taggyhan"},"content":" validMember.getName().fullName,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"taggyhan"},"content":" validMember.getRoom().value,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"taggyhan"},"content":" validMember.getTelegram().value","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"taggyhan"},"content":" ),","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"taggyhan"},"content":" commandResult.getFeedbackToUser()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"taggyhan"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Arrays.asList(validMember), modelStub.membersAdded);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" public void execute_duplicateMember_throwsCommandException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" Member validMember \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addMemberCommand \u003d new AddMemberCommand(validMember);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" ModelStub modelStub \u003d new ModelStubWithMember(validMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(CommandException.class,","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand.MESSAGE_DUPLICATE_MEMBER, () -\u003e addMemberCommand.execute(modelStub));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" Member alice \u003d new MemberBuilder().withName(\"Alice\").build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" Member bob \u003d new MemberBuilder().withName(\"Bob\").build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addAliceCommand \u003d new AddMemberCommand(alice);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addBobCommand \u003d new AddMemberCommand(bob);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addAliceCommandCopy \u003d new AddMemberCommand(alice);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertTrue(addAliceCommand.equals(addAliceCommandCopy));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(1));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(null));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertFalse(addAliceCommand.equals(addBobCommand));","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-22","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand addMemberCommand \u003d new AddMemberCommand(ALICE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d AddMemberCommand.class.getCanonicalName() + \"{toAdd\u003d\" + ALICE + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expected, addMemberCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * A default model stub that have all of the methods failing.","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private class ModelStub implements Model {","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"taggyhan"},"content":" public ReadOnlyUserPrefs getUserPrefs() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"taggyhan"},"content":" public void setUserPrefs(ReadOnlyUserPrefs userPrefs) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" public GuiSettings getGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" public void setGuiSettings(GuiSettings guiSettings) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" public Path getAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath(Path addressBookFilePath) {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"starchypotatocode"},"content":" public void addMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"taggyhan"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"taggyhan"},"content":" public void setAddressBook(ReadOnlyAddressBook newData) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"starchypotatocode"},"content":" public void deleteMember(Member target) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"starchypotatocode"},"content":" public void setMember(Member target, Member editedMember) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getFilteredMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"starchypotatocode"},"content":" public void updateFilteredMemberList(Predicate\u003cMember\u003e predicate) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" throw new AssertionError(\"This method should not be called.\");","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"starchypotatocode"},"content":" * A Model stub that contains a single member.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"starchypotatocode"},"content":" private class ModelStubWithMember extends ModelStub {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"starchypotatocode"},"content":" private final Member member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"starchypotatocode"},"content":" ModelStubWithMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"starchypotatocode"},"content":" this.member \u003d member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"starchypotatocode"},"content":" return this.member.isSameMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"starchypotatocode"},"content":" * A Model stub that always accept the member being added.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"starchypotatocode"},"content":" private class ModelStubAcceptingMemberAdded extends ModelStub {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"starchypotatocode"},"content":" final ArrayList\u003cMember\u003e membersAdded \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"starchypotatocode"},"content":" public boolean hasMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"starchypotatocode"},"content":" return membersAdded.stream().anyMatch(member::isSameMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":198,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":199,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":200,"author":{"gitId":"starchypotatocode"},"content":" public void addMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":201,"author":{"gitId":"starchypotatocode"},"content":" requireNonNull(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":202,"author":{"gitId":"starchypotatocode"},"content":" membersAdded.add(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":203,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":204,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":205,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":206,"author":{"gitId":"-"},"content":" public ReadOnlyAddressBook getAddressBook() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":207,"author":{"gitId":"-"},"content":" return new AddressBook();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":208,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":209,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":210,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-12","isFullCredit":false},{"lineNumber":211,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-12","isFullCredit":false}],"authorContributionMap":{"taggyhan":13,"starchypotatocode":50,"-":148}},{"path":"src/test/java/hallpointer/address/logic/commands/ClearCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"public class ClearCommandTest {","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" public void execute_emptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager();","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager();","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void execute_nonEmptyAddressBook_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" expectedModel.setAddressBook(new AddressBook());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertCommandSuccess(new ClearCommand(), model, ClearCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":31}},{"path":"src/test/java/hallpointer/address/logic/commands/CommandTestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.exceptions.CommandException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.testutil.UpdateMemberDescriptorBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Contains helper methods for testing commands.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"public class CommandTestUtil {","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_AMY \u003d \"Amy Bee\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public static final String VALID_NAME_BOB \u003d \"Bob Choo\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALID_TELEGRAM_AMY \u003d \"happyAmy\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALID_TELEGRAM_BOB \u003d \"bobTheTrain\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALID_ROOM_AMY \u003d \"10/10/9\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" public static final String VALID_ROOM_BOB \u003d \"3/1/90\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_HUSBAND \u003d \"husband\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public static final String VALID_TAG_FRIEND \u003d \"friend\";","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_AMY \u003d \" \" + PREFIX_NAME + VALID_NAME_AMY;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static final String NAME_DESC_BOB \u003d \" \" + PREFIX_NAME + VALID_NAME_BOB;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" public static final String TELEGRAM_DESC_AMY \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public static final String TELEGRAM_DESC_BOB \u003d \" \" + PREFIX_TELEGRAM + VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" public static final String ROOM_DESC_AMY \u003d \" \" + PREFIX_ROOM + VALID_ROOM_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" public static final String ROOM_DESC_BOB \u003d \" \" + PREFIX_ROOM + VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_FRIEND \u003d \" \" + PREFIX_TAG + VALID_TAG_FRIEND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public static final String TAG_DESC_HUSBAND \u003d \" \" + PREFIX_TAG + VALID_TAG_HUSBAND;","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public static final String INVALID_NAME_DESC \u003d \" \" + PREFIX_NAME + \"James\u0026\"; // \u0027\u0026\u0027 not allowed in names","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" public static final String INVALID_TELEGRAM_DESC \u003d \" \"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" + PREFIX_TELEGRAM + \"#\"; // \u0027#\u0027 not allowed in telegrams","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" public static final String INVALID_ROOM_DESC \u003d \" \" + PREFIX_ROOM + \"1/1/1a\"; // \u0027a\u0027 npt allowed in rooms","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public static final String INVALID_TAG_DESC \u003d \" \" + PREFIX_TAG + \"hubby*\"; // \u0027*\u0027 not allowed in tags","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_WHITESPACE \u003d \"\\t \\r \\n\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" public static final String PREAMBLE_NON_EMPTY \u003d \"NonEmptyPreamble\";","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"taggyhan"},"content":" public static final UpdateMemberCommand.UpdateMemberDescriptor DESC_AMY;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"taggyhan"},"content":" public static final UpdateMemberCommand.UpdateMemberDescriptor DESC_BOB;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" static {","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":" DESC_AMY \u003d new UpdateMemberDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_AMY).withRoom(VALID_ROOM_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":" DESC_BOB \u003d new UpdateMemberDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withRoom(VALID_ROOM_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" * - the returned {@link CommandResult} matches {@code expectedCommandResult} \u003cbr\u003e","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" * - the {@code actualModel} matches {@code expectedModel}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, CommandResult expectedCommandResult,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" CommandResult result \u003d command.execute(actualModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expectedCommandResult, result);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertEquals(expectedModel, actualModel);","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" } catch (CommandException ce) {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" throw new AssertionError(\"Execution of command should not fail.\", ce);","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" * Convenience wrapper to {@link #assertCommandSuccess(Command, Model, CommandResult, Model)}","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" * that takes a string {@code expectedMessage}.","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public static void assertCommandSuccess(Command command, Model actualModel, String expectedMessage,","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" Model expectedModel) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" CommandResult expectedCommandResult \u003d new CommandResult(expectedMessage);","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, actualModel, expectedCommandResult, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" * Executes the given {@code command}, confirms that \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * - a {@code CommandException} is thrown \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * - the CommandException message matches {@code expectedMessage} \u003cbr\u003e","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" * - the address book, filtered member list and selected member in {@code actualModel} remain unchanged","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" public static void assertCommandFailure(Command command, Model actualModel, String expectedMessage) {","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" // we are unable to defensively copy the model for comparison later, so we can","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // only do so by copying its components.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" AddressBook expectedAddressBook \u003d new AddressBook(actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e expectedFilteredList \u003d new ArrayList\u003c\u003e(actualModel.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertThrows(CommandException.class, expectedMessage, () -\u003e command.execute(actualModel));","lastModifiedDate":"2019-05-03","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertEquals(expectedAddressBook, actualModel.getAddressBook());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedFilteredList, actualModel.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" * Updates {@code model}\u0027s filtered list to show only the member at the given {@code targetIndex} in the","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" * {@code model}\u0027s address book.","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" public static void showMemberAtIndex(Model model, Index targetIndex) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(targetIndex.getZeroBased() \u003c model.getFilteredMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-01-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d model.getFilteredMemberList().get(targetIndex.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" final String[] splitName \u003d member.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0])));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(1, model.getFilteredMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"taggyhan":5,"starchypotatocode":27,"-":91}},{"path":"src/test/java/hallpointer/address/logic/commands/DeleteMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.showMemberAtIndex;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Contains integration tests (interaction with the Model) and unit tests for","lastModifiedDate":"2020-12-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * {@code DeleteMemberCommand}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"public class DeleteMemberCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void execute_validIndexUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" Member memberToDelete \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"taggyhan"},"content":" DeleteMemberCommand.MESSAGE_DELETE_MEMBER_SUCCESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"taggyhan"},"content":" memberToDelete.getName().fullName,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"taggyhan"},"content":" memberToDelete.getRoom().value,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"taggyhan"},"content":" memberToDelete.getTelegram().value","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"taggyhan"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" ModelManager expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.deleteMember(memberToDelete);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(deleteMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void execute_invalidIndexUnfilteredList_throwsCommandException() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredMemberList().size() + 1);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(deleteMemberCommand, model, Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void execute_validIndexFilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" Member memberToDelete \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"taggyhan"},"content":" DeleteMemberCommand.MESSAGE_DELETE_MEMBER_SUCCESS,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"taggyhan"},"content":" memberToDelete.getName().fullName,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"taggyhan"},"content":" memberToDelete.getRoom().value,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"taggyhan"},"content":" memberToDelete.getTelegram().value","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"taggyhan"},"content":" );","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.deleteMember(memberToDelete);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" showNoMember(expectedModel);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(deleteMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" public void execute_invalidIndexFilteredList_throwsCommandException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(outOfBoundIndex);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" assertCommandFailure(deleteMemberCommand, model, Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteFirstCommand \u003d new DeleteMemberCommand(INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteSecondCommand \u003d new DeleteMemberCommand(INDEX_SECOND_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteFirstCommandCopy \u003d new DeleteMemberCommand(INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertFalse(deleteFirstCommand.equals(deleteSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" Index targetIndex \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand deleteMemberCommand \u003d new DeleteMemberCommand(targetIndex);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d DeleteMemberCommand.class.getCanonicalName() + \"{targetIndex\u003d\" + targetIndex + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expected, deleteMemberCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" * Updates {@code model}\u0027s filtered list to show no one.","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"starchypotatocode"},"content":" private void showNoMember(Model model) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"starchypotatocode"},"content":" model.updateFilteredMemberList(p -\u003e false);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(model.getFilteredMemberList().isEmpty());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-05","isFullCredit":false}],"authorContributionMap":{"taggyhan":10,"starchypotatocode":37,"-":81}},{"path":"src/test/java/hallpointer/address/logic/commands/FindMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_MEMBERS_LISTED_OVERVIEW;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.CARL;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ELLE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.FIONA;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * Contains integration tests (interaction with the Model) for {@code FindMemberCommand}.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"public class FindMemberCommandTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private Model expectedModel \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"first\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" new NameContainsKeywordsPredicate(Collections.singletonList(\"second\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand findFirstCommand \u003d new FindMemberCommand(firstPredicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand findSecondCommand \u003d new FindMemberCommand(secondPredicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand findFirstCommandCopy \u003d new FindMemberCommand(firstPredicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(findFirstCommand.equals(findFirstCommandCopy));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(1));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(null));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertFalse(findFirstCommand.equals(findSecondCommand));","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public void execute_zeroKeywords_noMemberFound() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MESSAGE_MEMBERS_LISTED_OVERVIEW, 0);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\" \");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand command \u003d new FindMemberCommand(predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.updateFilteredMemberList(predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Collections.emptyList(), model.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" public void execute_multipleKeywords_multipleMembersFound() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MESSAGE_MEMBERS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Kurz Elle Kunz\");","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand command \u003d new FindMemberCommand(predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.updateFilteredMemberList(predicate);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2019-01-25","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" public void execute_multipleKeywordsOutOfOrder_multipleMembersFound() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MESSAGE_MEMBERS_LISTED_OVERVIEW, 3);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" NameContainsKeywordsPredicate predicate \u003d preparePredicate(\"Elle Kurz Kunz\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand command \u003d new FindMemberCommand(predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.updateFilteredMemberList(predicate);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" assertCommandSuccess(command, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredMemberList());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"keyword\"));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand findMemberCommand \u003d new FindMemberCommand(predicate);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d FindMemberCommand.class.getCanonicalName() + \"{predicate\u003d\" + predicate + \"}\";","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expected, findMemberCommand.toString());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}.","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" private NameContainsKeywordsPredicate preparePredicate(String userInput) {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split(\"\\\\s+\")));","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":33,"-":68}},{"path":"src/test/java/hallpointer/address/logic/commands/ListMembersCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.showMemberAtIndex;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":" * Contains integration tests (interaction with the Model) and unit tests for ListMembersCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"taggyhan"},"content":"public class ListMembersCommandTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private Model model;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" private Model expectedModel;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" expectedModel \u003d new ModelManager(model.getAddressBook(), new UserPrefs());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void execute_listIsNotFiltered_showsSameList() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":" assertCommandSuccess(new ListMembersCommand(), model, ListMembersCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void execute_listIsFiltered_showsEverything() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"taggyhan"},"content":" assertCommandSuccess(new ListMembersCommand(), model, ListMembersCommand.MESSAGE_SUCCESS, expectedModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"taggyhan":4,"starchypotatocode":4,"-":31}},{"path":"src/test/java/hallpointer/address/logic/commands/UpdateMemberCommandTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.assertCommandSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.showMemberAtIndex;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand.UpdateMemberDescriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ModelManager;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.testutil.UpdateMemberDescriptorBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":" * Contains integration tests (interaction with the Model) and unit tests for UpdateMemberCommand.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"taggyhan"},"content":"public class UpdateMemberCommandTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" private Model model \u003d new ModelManager(getTypicalAddressBook(), new UserPrefs());","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void execute_allFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" Member editedMember \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptorBuilder(editedMember).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand updateMemberCommand \u003d new UpdateMemberCommand(INDEX_FIRST_MEMBER, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand.MESSAGE_UPDATE_MEMBER_SUCCESS, Messages.format(editedMember));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.setMember(model.getFilteredMemberList().get(0), editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"taggyhan"},"content":" assertCommandSuccess(updateMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void execute_someFieldsSpecifiedUnfilteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" Index indexLastMember \u003d Index.fromOneBased(model.getFilteredMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" Member lastMember \u003d model.getFilteredMemberList().get(indexLastMember.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" MemberBuilder memberInList \u003d new MemberBuilder(lastMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":" Member editedMember \u003d memberInList.withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"taggyhan"},"content":" .withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptorBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand updateMemberCommand \u003d new UpdateMemberCommand(indexLastMember, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand.MESSAGE_UPDATE_MEMBER_SUCCESS, Messages.format(editedMember));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.setMember(lastMember, editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"taggyhan"},"content":" assertCommandSuccess(updateMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void execute_noFieldSpecifiedUnfilteredList_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptor();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand updateMemberCommand \u003d new UpdateMemberCommand(INDEX_FIRST_MEMBER, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" Member editedMember \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand.MESSAGE_UPDATE_MEMBER_SUCCESS, Messages.format(editedMember));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"taggyhan"},"content":" assertCommandSuccess(updateMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" public void execute_filteredList_success() {","lastModifiedDate":"2018-08-07","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" Member memberInFilteredList \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":" Member editedMember \u003d new MemberBuilder(memberInFilteredList).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand updateMemberCommand \u003d new UpdateMemberCommand(INDEX_FIRST_MEMBER,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"taggyhan"},"content":" new UpdateMemberDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand.MESSAGE_UPDATE_MEMBER_SUCCESS, Messages.format(editedMember));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" Model expectedModel \u003d new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs());","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" expectedModel.setMember(model.getFilteredMemberList().get(0), editedMember);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"taggyhan"},"content":" assertCommandSuccess(updateMemberCommand, model, expectedMessage, expectedModel);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" public void execute_duplicateMemberUnfilteredList_failure() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" Member firstMember \u003d model.getFilteredMemberList().get(INDEX_FIRST_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptorBuilder(firstMember).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand updateMemberCommand \u003d new UpdateMemberCommand(INDEX_SECOND_MEMBER, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"taggyhan"},"content":" assertCommandFailure(updateMemberCommand, model, UpdateMemberCommand.MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" public void execute_duplicateMemberFilteredList_failure() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" // edit member in filtered list into a duplicate in address book","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":" Member memberInList \u003d model.getAddressBook().getMemberList().get(INDEX_SECOND_MEMBER.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand updateMemberCommand \u003d new UpdateMemberCommand(INDEX_FIRST_MEMBER,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"taggyhan"},"content":" new UpdateMemberDescriptorBuilder(memberInList).build());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"taggyhan"},"content":" assertCommandFailure(updateMemberCommand, model, UpdateMemberCommand.MESSAGE_DUPLICATE_MEMBER);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" public void execute_invalidMemberIndexUnfilteredList_failure() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":" Index outOfBoundIndex \u003d Index.fromOneBased(model.getFilteredMemberList().size() + 1);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptorBuilder().withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand updateMemberCommand \u003d new UpdateMemberCommand(outOfBoundIndex, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"taggyhan"},"content":" assertCommandFailure(updateMemberCommand, model, Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" * Edit filtered list where index is larger than size of filtered list,","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" * but smaller than size of address book","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" public void execute_invalidMemberIndexFilteredList_failure() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"starchypotatocode"},"content":" showMemberAtIndex(model, INDEX_FIRST_MEMBER);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" Index outOfBoundIndex \u003d INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" // ensures that outOfBoundIndex is still in bounds of address book list","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(outOfBoundIndex.getZeroBased() \u003c model.getAddressBook().getMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand updateMemberCommand \u003d new UpdateMemberCommand(outOfBoundIndex,","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"taggyhan"},"content":" new UpdateMemberDescriptorBuilder().withName(VALID_NAME_BOB).build());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-05","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"taggyhan"},"content":" assertCommandFailure(updateMemberCommand, model, Messages.MESSAGE_INVALID_MEMBER_DISPLAYED_INDEX);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-18","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-01-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-08-08","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"taggyhan"},"content":" final UpdateMemberCommand standardCommand \u003d new UpdateMemberCommand(INDEX_FIRST_MEMBER, DESC_AMY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor copyDescriptor \u003d new UpdateMemberDescriptor(DESC_AMY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand commandWithSameValues \u003d new UpdateMemberCommand(INDEX_FIRST_MEMBER, copyDescriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(commandWithSameValues));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" assertTrue(standardCommand.equals(standardCommand));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(null));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" assertFalse(standardCommand.equals(new ClearCommand()));","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"-"},"content":" // different index -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"taggyhan"},"content":" assertFalse(standardCommand.equals(new UpdateMemberCommand(INDEX_SECOND_MEMBER, DESC_AMY)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" // different descriptor -\u003e returns false","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"taggyhan"},"content":" assertFalse(standardCommand.equals(new UpdateMemberCommand(INDEX_FIRST_MEMBER, DESC_BOB)));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-08","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":" Index index \u003d Index.fromOneBased(1);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor updateMemberDescriptor \u003d new UpdateMemberDescriptor();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand updateMemberCommand \u003d new UpdateMemberCommand(index, updateMemberDescriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"taggyhan"},"content":" String expected \u003d UpdateMemberCommand.class.getCanonicalName() + \"{index\u003d\" + index + \", UpdateMemberDescriptor\u003d\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"taggyhan"},"content":" + updateMemberDescriptor + \"}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"taggyhan"},"content":" assertEquals(expected, updateMemberCommand.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-08","isFullCredit":false}],"authorContributionMap":{"taggyhan":44,"starchypotatocode":35,"-":111}},{"path":"src/test/java/hallpointer/address/logic/commands/UpdateMemberDescriptorTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.commands;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.DESC_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand.UpdateMemberDescriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.testutil.UpdateMemberDescriptorBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"taggyhan"},"content":"public class UpdateMemberDescriptorTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptorWithSameValues \u003d new UpdateMemberDescriptor(DESC_AMY);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(descriptorWithSameValues));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertTrue(DESC_AMY.equals(DESC_AMY));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(null));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(5));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(DESC_BOB));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor editedAmy \u003d new UpdateMemberDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"taggyhan"},"content":" editedAmy \u003d new UpdateMemberDescriptorBuilder(DESC_AMY).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"taggyhan"},"content":" editedAmy \u003d new UpdateMemberDescriptorBuilder(DESC_AMY).withRoom(VALID_ROOM_BOB).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"taggyhan"},"content":" editedAmy \u003d new UpdateMemberDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(DESC_AMY.equals(editedAmy));","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-05","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor updateMemberDescriptor \u003d new UpdateMemberDescriptor();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"taggyhan"},"content":" String expected \u003d UpdateMemberDescriptor.class.getCanonicalName() + \"{name\u003d\"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":" + updateMemberDescriptor.getName().orElse(null)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"taggyhan"},"content":" + \", telegram\u003d\" + updateMemberDescriptor.getTelegram().orElse(null)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"taggyhan"},"content":" + \", room\u003d\" + updateMemberDescriptor.getRoom().orElse(null)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":" + \", tags\u003d\" + updateMemberDescriptor.getTags().orElse(null)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"taggyhan"},"content":" + \"}\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"taggyhan"},"content":" assertEquals(expected, updateMemberDescriptor.toString());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-05","isFullCredit":false}],"authorContributionMap":{"taggyhan":16,"starchypotatocode":3,"-":47}},{"path":"src/test/java/hallpointer/address/logic/parser/AddMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_ROOM_DESC;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.NAME_DESC_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.AMY;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BOB;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":"public class AddMemberCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" private AddMemberCommandParser parser \u003d new AddMemberCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" public void parse_allFieldsPresent_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" Member expectedMember \u003d new MemberBuilder(BOB).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // whitespace only preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" + TAG_DESC_FRIEND, new AddMemberCommand(expectedMember));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // multiple tags - all accepted","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" Member expectedMemberMultipleTags \u003d new MemberBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND)","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-07-25","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertParseSuccess(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" NAME_DESC_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" new AddMemberCommand(expectedMemberMultipleTags));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" public void parse_repeatedNonTagValue_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" String validExpectedMemberString \u003d NAME_DESC_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" // multiple names","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_AMY + validExpectedMemberString,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" // multiple telegrams","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, TELEGRAM_DESC_AMY + validExpectedMemberString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" // multiple rooms","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, ROOM_DESC_AMY + validExpectedMemberString,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" // multiple fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" // note that this will fail if the Message part does not have the prefixes sorted in lexicographical order","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" validExpectedMemberString + TELEGRAM_DESC_AMY + NAME_DESC_AMY + ROOM_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" + validExpectedMemberString,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME, PREFIX_TELEGRAM, PREFIX_ROOM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" // invalid value followed by valid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + validExpectedMemberString,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_TELEGRAM_DESC + validExpectedMemberString,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":" // invalid room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_ROOM_DESC + validExpectedMemberString,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" // valid value followed by invalid value","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, validExpectedMemberString + INVALID_NAME_DESC,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_NAME));","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, validExpectedMemberString + INVALID_TELEGRAM_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" // invalid room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, validExpectedMemberString + INVALID_ROOM_DESC,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" public void parse_optionalFieldsMissing_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // zero tags","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" Member expectedMember \u003d new MemberBuilder(AMY).withTags().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, NAME_DESC_AMY + TELEGRAM_DESC_AMY + ROOM_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" new AddMemberCommand(expectedMember));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" public void parse_compulsoryFieldMissing_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" // missing name prefix","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, VALID_NAME_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" // missing telegram prefix","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + VALID_TELEGRAM_BOB + ROOM_DESC_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"starchypotatocode"},"content":" // missing room prefix","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + VALID_ROOM_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" // all prefixes missing","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, VALID_NAME_BOB + VALID_TELEGRAM_BOB + VALID_ROOM_BOB,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" expectedMessage);","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + TELEGRAM_DESC_BOB + ROOM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + INVALID_TELEGRAM_DESC + ROOM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"starchypotatocode"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"starchypotatocode"},"content":" // invalid room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + INVALID_ROOM_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"starchypotatocode"},"content":" + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Room.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // invalid tag","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, NAME_DESC_BOB + TELEGRAM_DESC_BOB + ROOM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" // two invalid values, only first invalid value reported","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, INVALID_NAME_DESC + TELEGRAM_DESC_BOB + INVALID_ROOM_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" // non-empty preamble","lastModifiedDate":"2017-12-23","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + TELEGRAM_DESC_BOB","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" + ROOM_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND,","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-15","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-15","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":74,"-":96}},{"path":"src/test/java/hallpointer/address/logic/parser/AddressBookParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_UNKNOWN_COMMAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.ClearCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.ExitCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.FindMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.commands.HelpCommand;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.ListMembersCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand.UpdateMemberDescriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberUtil;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.testutil.UpdateMemberDescriptorBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"public class AddressBookParserTest {","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private final AddressBookParser parser \u003d new AddressBookParser();","lastModifiedDate":"2017-07-07","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseCommand_add() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" AddMemberCommand command \u003d (AddMemberCommand) parser.parseCommand(MemberUtil.getAddCommand(member));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(new AddMemberCommand(member), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void parseCommand_clear() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD) instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ClearCommand.COMMAND_WORD + \" 3\") instanceof ClearCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" public void parseCommand_delete() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand command \u003d (DeleteMemberCommand) parser.parseCommand(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" DeleteMemberCommand.COMMAND_WORD + \" \" + INDEX_FIRST_MEMBER.getOneBased());","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(new DeleteMemberCommand(INDEX_FIRST_MEMBER), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseCommand_edit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptorBuilder(member).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand command \u003d (UpdateMemberCommand) parser.parseCommand(UpdateMemberCommand.COMMAND_WORD + \" \"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"taggyhan"},"content":" + INDEX_FIRST_MEMBER.getOneBased() + \" \" + MemberUtil.getUpdateMemberDescriptorDetails(descriptor));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":" assertEquals(new UpdateMemberCommand(INDEX_FIRST_MEMBER, descriptor), command);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void parseCommand_exit() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD) instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + \" 3\") instanceof ExitCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" public void parseCommand_find() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d Arrays.asList(\"foo\", \"bar\", \"baz\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand command \u003d (FindMemberCommand) parser.parseCommand(","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand.COMMAND_WORD + \" \" + keywords.stream().collect(Collectors.joining(\" \")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(new FindMemberCommand(new NameContainsKeywordsPredicate(keywords)), command);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" public void parseCommand_help() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD + \" 3\") instanceof HelpCommand);","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" public void parseCommand_list() throws Exception {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"taggyhan"},"content":" assertTrue(parser.parseCommand(ListMembersCommand.COMMAND_WORD) instanceof ListMembersCommand);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"taggyhan"},"content":" assertTrue(parser.parseCommand(ListMembersCommand.COMMAND_WORD + \" 3\") instanceof ListMembersCommand);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" public void parseCommand_unrecognisedInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, String.format(MESSAGE_INVALID_COMMAND_FORMAT, HelpCommand.MESSAGE_USAGE), ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" -\u003e parser.parseCommand(\"\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" public void parseCommand_unknownCommand_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_UNKNOWN_COMMAND, () -\u003e parser.parseCommand(\"unknownCommand\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-24","isFullCredit":false}],"authorContributionMap":{"taggyhan":10,"starchypotatocode":18,"-":73}},{"path":"src/test/java/hallpointer/address/logic/parser/ArgumentTokenizerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import java.util.Optional;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"public class ArgumentTokenizerTest {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" private final Prefix unknownPrefix \u003d new Prefix(\"--u\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" private final Prefix pSlash \u003d new Prefix(\"p/\");","lastModifiedDate":"2017-03-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" private final Prefix dashT \u003d new Prefix(\"-t\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" private final Prefix hatQ \u003d new Prefix(\"^Q\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" public void tokenize_emptyArgsString_noValues() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" String argsString \u003d \" \";","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private void assertPreamblePresent(ArgumentMultimap argMultimap, String expectedPreamble) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(expectedPreamble, argMultimap.getPreamble());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private void assertPreambleEmpty(ArgumentMultimap argMultimap) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertTrue(argMultimap.getPreamble().isEmpty());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" * Asserts all the arguments in {@code argMultimap} with {@code prefix} match the {@code expectedValues}","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" * and only the last value is returned upon calling {@code ArgumentMultimap#getValue(Prefix)}.","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-20","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" private void assertArgumentPresent(ArgumentMultimap argMultimap, Prefix prefix, String... expectedValues) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" // Verify the last value is returned","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[expectedValues.length - 1], argMultimap.getValue(prefix).get());","lastModifiedDate":"2017-06-07","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Verify the number of values returned is as expected","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertEquals(expectedValues.length, argMultimap.getAllValues(prefix).size());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Verify all values returned are as expected and in order","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" for (int i \u003d 0; i \u003c expectedValues.length; i++) {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertEquals(expectedValues[i], argMultimap.getAllValues(prefix).get(i));","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" private void assertArgumentAbsent(ArgumentMultimap argMultimap, Prefix prefix) {","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(argMultimap.getValue(prefix).isPresent());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" public void tokenize_noPrefixes_allTakenAsPreamble() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" String argsString \u003d \" some random string /t tag with leading and trailing spaces \";","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" // Same string expected as preamble, but leading/trailing spaces should be trimmed","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString.trim());","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void tokenize_oneArgument() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" // Preamble present","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" String argsString \u003d \" Some preamble string p/ Argument value \";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Some preamble string\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" // No preamble","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" argsString \u003d \" p/ Argument value \";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"Argument value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" public void tokenize_multipleArguments() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" // Only two arguments are present","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" // All three arguments are present","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" argsString \u003d \"Different Preamble String ^Q111 -t dashT-Value p/pSlash value\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"Different Preamble String\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"111\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" /* Also covers: Reusing of the tokenizer multiple times */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" // Reuse tokenizer on an empty string to ensure ArgumentMultimap is correctly reset","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" // (i.e. no stale values from the previous tokenizing remain)","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" argsString \u003d \"\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertPreambleEmpty(argMultimap);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" /* Also covers: testing for prefixes not specified as a prefix */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // Prefixes not previously given to the tokenizer should not return any values","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" argsString \u003d unknownPrefix + \"some value\";","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, unknownPrefix);","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, argsString); // Unknown prefix is taken as part of preamble","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsWithRepeats() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" // Two arguments repeated, some have empty values","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleString -t dashT-Value ^Q ^Q -t another dashT value p/ pSlash value -t\";","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-03-20","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleString\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, pSlash, \"pSlash value\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"dashT-Value\", \"another dashT value\", \"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, hatQ, \"\", \"\");","lastModifiedDate":"2017-03-08","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" public void tokenize_multipleArgumentsJoined() {","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" String argsString \u003d \"SomePreambleStringp/ pSlash joined-tjoined -t not joined^Qjoined\";","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, pSlash, dashT, hatQ);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" assertPreamblePresent(argMultimap, \"SomePreambleStringp/ pSlash joined-tjoined\");","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, pSlash);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" assertArgumentPresent(argMultimap, dashT, \"not joined^Qjoined\");","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertArgumentAbsent(argMultimap, hatQ);","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-19","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"starchypotatocode"},"content":" public void tokenize_multipleWhitespaceTrimmed() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" String argsString \u003d \" -t Meow \\t Woof \\t\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"starchypotatocode"},"content":" ArgumentMultimap argMultimap \u003d ArgumentTokenizer.tokenize(argsString, dashT);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Optional.of(\"Meow Woof\"), argMultimap.getValue(dashT));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" public void equalsMethod() {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" Prefix aaa \u003d new Prefix(\"aaa\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" assertEquals(aaa, aaa);","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" assertEquals(aaa, new Prefix(\"aaa\"));","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, \"aaa\");","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" assertNotEquals(aaa, new Prefix(\"aab\"));","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-10-16","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":10,"-":150}},{"path":"src/test/java/hallpointer/address/logic/parser/DeleteMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.DeleteMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * As we are only doing white-box testing, our test cases do not cover path variations","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * outside of the DeleteMemberCommand code. For example, inputs \"1\" and \"1 abc\" take the","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" * same path through the DeleteMemberCommand, and therefore we test only one of them.","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" * The path variation for those two cases occur inside the ParserUtil, and","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" * therefore should be covered by the ParserUtilTest.","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"public class DeleteMemberCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private DeleteMemberCommandParser parser \u003d new DeleteMemberCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsDeleteCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, \"1\", new DeleteMemberCommand(INDEX_FIRST_MEMBER));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void parse_invalidArgs_throwsParseException() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"a\",","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, DeleteMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-09","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":9,"-":24}},{"path":"src/test/java/hallpointer/address/logic/parser/FindMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.FindMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"public class FindMemberCommandParserTest {","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" private FindMemberCommandParser parser \u003d new FindMemberCommandParser();","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public void parse_emptyArg_throwsParseException() {","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \" \",","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindMemberCommand.MESSAGE_USAGE));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" public void parse_validArgs_returnsFindCommand() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" // no leading and trailing whitespaces","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" FindMemberCommand expectedFindMemberCommand \u003d","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" new FindMemberCommand(new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\")));","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, \"Alice Bob\", expectedFindMemberCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // multiple whitespaces between keywords","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" assertParseSuccess(parser, \" \\n Alice \\n \\t Bob \\t\", expectedFindMemberCommand);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-27","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-27","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":10,"-":25}},{"path":"src/test/java/hallpointer/address/logic/parser/ParserUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.parser.exceptions.ParseException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class ParserUtilTest {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private static final String INVALID_TELEGRAM \u003d \"+hisrocks\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" private static final String INVALID_ROOM \u003d \" \";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d \"Rachel Walker\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" private static final String VALID_TELEGRAM \u003d \"elephant\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" private static final String VALID_ROOM \u003d \"8/7/23\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_1 \u003d \"friend\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private static final String VALID_TAG_2 \u003d \"neighbour\";","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" private static final String WHITESPACE \u003d \" \\t\\r\\n\";","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void parseIndex_invalidInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseIndex(\"10 a\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void parseIndex_outOfRangeInput_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, MESSAGE_INVALID_INDEX, ()","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" -\u003e ParserUtil.parseIndex(Long.toString(Integer.MAX_VALUE + 1)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" public void parseIndex_validInput_success() throws Exception {","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" // No whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(INDEX_FIRST_MEMBER, ParserUtil.parseIndex(\"1\"));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Leading and trailing whitespaces","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(INDEX_FIRST_MEMBER, ParserUtil.parseIndex(\" 1 \"));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void parseName_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseName((String) null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" public void parseName_invalidValue_throwsParseException() {","lastModifiedDate":"2018-07-10","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseName(INVALID_NAME));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" public void parseName_validValueWithoutWhitespace_returnsName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(VALID_NAME));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" public void parseName_validValueWithWhitespace_returnsTrimmedName() throws Exception {","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" String nameWithWhitespace \u003d WHITESPACE + VALID_NAME + WHITESPACE;","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" Name expectedName \u003d new Name(VALID_NAME);","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" assertEquals(expectedName, ParserUtil.parseName(nameWithWhitespace));","lastModifiedDate":"2017-05-29","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" public void parseTelegram_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTelegram((String) null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" public void parseTelegram_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTelegram(INVALID_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" public void parseTelegram_validValueWithoutWhitespace_returnsTelegram() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(VALID_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" public void parseTelegram_validValueWithWhitespace_returnsTrimmedTelegram() throws Exception {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" String telegramWithWhitespace \u003d WHITESPACE + VALID_TELEGRAM + WHITESPACE;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" Telegram expectedTelegram \u003d new Telegram(VALID_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedTelegram, ParserUtil.parseTelegram(telegramWithWhitespace));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" public void parseRoom_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseRoom((String) null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" public void parseRoom_invalidValue_throwsParseException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseRoom(INVALID_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" public void parseRoom_validValueWithoutWhitespace_returnsRoom() throws Exception {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" Room expectedRoom \u003d new Room(VALID_ROOM);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedRoom, ParserUtil.parseRoom(VALID_ROOM));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" public void parseRoom_validValueWithWhitespace_returnsTrimmedRoom() throws Exception {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" String roomWithWhitespace \u003d WHITESPACE + VALID_ROOM + WHITESPACE;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" Room expectedRoom \u003d new Room(VALID_ROOM);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedRoom, ParserUtil.parseRoom(roomWithWhitespace));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":" public void parseTag_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTag(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" public void parseTag_invalidValue_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTag(INVALID_TAG));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithoutWhitespace_returnsTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(VALID_TAG_1));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"-"},"content":" public void parseTag_validValueWithWhitespace_returnsTrimmedTag() throws Exception {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"-"},"content":" String tagWithWhitespace \u003d WHITESPACE + VALID_TAG_1 + WHITESPACE;","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"-"},"content":" Tag expectedTag \u003d new Tag(VALID_TAG_1);","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"-"},"content":" assertEquals(expectedTag, ParserUtil.parseTag(tagWithWhitespace));","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" public void parseTags_null_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e ParserUtil.parseTags(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithInvalidTags_throwsParseException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" assertThrows(ParseException.class, () -\u003e ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, INVALID_TAG)));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":" public void parseTags_emptyCollection_returnsEmptySet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" assertTrue(ParserUtil.parseTags(Collections.emptyList()).isEmpty());","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"-"},"content":" public void parseTags_collectionWithValidTags_returnsTagSet() throws Exception {","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e actualTagSet \u003d ParserUtil.parseTags(Arrays.asList(VALID_TAG_1, VALID_TAG_2));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e expectedTagSet \u003d new HashSet\u003cTag\u003e(Arrays.asList(new Tag(VALID_TAG_1), new Tag(VALID_TAG_2)));","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":" assertEquals(expectedTagSet, actualTagSet);","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-22","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-22","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":32,"-":138}},{"path":"src/test/java/hallpointer/address/logic/parser/UpdateMemberCommandParserTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.logic.parser;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.Messages.MESSAGE_INVALID_COMMAND_FORMAT;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_ROOM_DESC;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.NAME_DESC_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.ROOM_DESC_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseFailure;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CommandParserTestUtil.assertParseSuccess;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalIndexes.INDEX_THIRD_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"import hallpointer.address.logic.Messages;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand.UpdateMemberDescriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.testutil.UpdateMemberDescriptorBuilder;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":"public class UpdateMemberCommandParserTest {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" private static final String TAG_EMPTY \u003d \" \" + PREFIX_TAG;","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" private static final String MESSAGE_INVALID_FORMAT \u003d","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"taggyhan"},"content":" String.format(MESSAGE_INVALID_COMMAND_FORMAT, UpdateMemberCommand.MESSAGE_USAGE);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"taggyhan"},"content":" private UpdateMemberCommandParser parser \u003d new UpdateMemberCommandParser();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void parse_missingParts_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" // no index specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" // no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"taggyhan"},"content":" assertParseFailure(parser, \"1\", UpdateMemberCommand.MESSAGE_NOT_UPDATED);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // no index and no field specified","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void parse_invalidPreamble_failure() {","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // negative index","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"-5\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" // zero index","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"0\" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // invalid arguments being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 some random string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // invalid prefix being parsed as preamble","lastModifiedDate":"2017-06-06","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1 i/ string\", MESSAGE_INVALID_FORMAT);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" public void parse_invalidValue_failure() {","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC, Name.MESSAGE_CONSTRAINTS); // invalid name","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"1\" + INVALID_TELEGRAM_DESC,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" Telegram.MESSAGE_CONSTRAINTS); // invalid telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"1\" + INVALID_ROOM_DESC, Room.MESSAGE_CONSTRAINTS); // invalid room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + INVALID_TAG_DESC, Tag.MESSAGE_CONSTRAINTS); // invalid tag","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegram followed by valid room","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"1\" + INVALID_TELEGRAM_DESC + ROOM_DESC_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" Telegram.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Member} being edited,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" // parsing it together with a valid tag results in error","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" assertParseFailure(parser, \"1\" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" // multiple invalid values, but only the first invalid value is captured","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, \"1\" + INVALID_NAME_DESC + INVALID_ROOM_DESC + VALID_TELEGRAM_AMY,","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" Name.MESSAGE_CONSTRAINTS);","lastModifiedDate":"2018-09-22","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" public void parse_allFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_SECOND_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" String userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_BOB + TAG_DESC_HUSBAND","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":" + ROOM_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptorBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withRoom(VALID_ROOM_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build();","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand expectedCommand \u003d new UpdateMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" public void parse_someFieldsSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" String userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_BOB + ROOM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptorBuilder()","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB).withRoom(VALID_ROOM_AMY).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand expectedCommand \u003d new UpdateMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" public void parse_oneFieldSpecified_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" // name","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_THIRD_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + NAME_DESC_AMY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptorBuilder().withName(VALID_NAME_AMY).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand expectedCommand \u003d new UpdateMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"starchypotatocode"},"content":" // telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"taggyhan"},"content":" descriptor \u003d new UpdateMemberDescriptorBuilder().withTelegram(VALID_TELEGRAM_AMY).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"taggyhan"},"content":" expectedCommand \u003d new UpdateMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"starchypotatocode"},"content":" // room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + ROOM_DESC_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"taggyhan"},"content":" descriptor \u003d new UpdateMemberDescriptorBuilder().withRoom(VALID_ROOM_AMY).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"taggyhan"},"content":" expectedCommand \u003d new UpdateMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"-"},"content":" // tags","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"-"},"content":" userInput \u003d targetIndex.getOneBased() + TAG_DESC_FRIEND;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"taggyhan"},"content":" descriptor \u003d new UpdateMemberDescriptorBuilder().withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"taggyhan"},"content":" expectedCommand \u003d new UpdateMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"-"},"content":" public void parse_multipleRepeatedFields_failure() {","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"-"},"content":" // More extensive testing of duplicate parameter detections is done in","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"starchypotatocode"},"content":" // AddMemberCommandParserTest#parse_repeatedNonTagValue_failure()","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"-"},"content":" // valid followed by invalid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_FIRST_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"starchypotatocode"},"content":" String userInput \u003d targetIndex.getOneBased() + INVALID_TELEGRAM_DESC + TELEGRAM_DESC_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"-"},"content":" // invalid followed by valid","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_BOB + INVALID_TELEGRAM_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"starchypotatocode"},"content":" assertParseFailure(parser, userInput, Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"-"},"content":" // mulltiple valid fields repeated","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + TELEGRAM_DESC_AMY + ROOM_DESC_AMY","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"starchypotatocode"},"content":" + TAG_DESC_FRIEND + TELEGRAM_DESC_AMY + ROOM_DESC_AMY + TAG_DESC_FRIEND","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"starchypotatocode"},"content":" + TELEGRAM_DESC_BOB + ROOM_DESC_BOB + TAG_DESC_HUSBAND;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":176,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":177,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM, PREFIX_ROOM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":178,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":179,"author":{"gitId":"-"},"content":" // multiple invalid values","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":180,"author":{"gitId":"starchypotatocode"},"content":" userInput \u003d targetIndex.getOneBased() + INVALID_TELEGRAM_DESC + INVALID_ROOM_DESC","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":181,"author":{"gitId":"starchypotatocode"},"content":" + INVALID_TELEGRAM_DESC + INVALID_ROOM_DESC;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":182,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":183,"author":{"gitId":"-"},"content":" assertParseFailure(parser, userInput,","lastModifiedDate":"2023-07-14","isFullCredit":false},{"lineNumber":184,"author":{"gitId":"starchypotatocode"},"content":" Messages.getErrorMessageForDuplicatePrefixes(PREFIX_TELEGRAM, PREFIX_ROOM));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":185,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":186,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":187,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":188,"author":{"gitId":"-"},"content":" public void parse_resetTags_success() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":189,"author":{"gitId":"starchypotatocode"},"content":" Index targetIndex \u003d INDEX_THIRD_MEMBER;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":190,"author":{"gitId":"-"},"content":" String userInput \u003d targetIndex.getOneBased() + TAG_EMPTY;","lastModifiedDate":"2017-05-25","isFullCredit":false},{"lineNumber":191,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":192,"author":{"gitId":"taggyhan"},"content":" UpdateMemberDescriptor descriptor \u003d new UpdateMemberDescriptorBuilder().withTags().build();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":193,"author":{"gitId":"taggyhan"},"content":" UpdateMemberCommand expectedCommand \u003d new UpdateMemberCommand(targetIndex, descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":194,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":195,"author":{"gitId":"-"},"content":" assertParseSuccess(parser, userInput, expectedCommand);","lastModifiedDate":"2017-07-06","isFullCredit":false},{"lineNumber":196,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-04","isFullCredit":false},{"lineNumber":197,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-04","isFullCredit":false}],"authorContributionMap":{"taggyhan":21,"starchypotatocode":51,"-":125}},{"path":"src/test/java/hallpointer/address/model/AddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Collection;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.DuplicateMemberException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"import javafx.collections.FXCollections;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"import javafx.collections.ObservableList;","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"public class AddressBookTest {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" private final AddressBook addressBook \u003d new AddressBook();","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(Collections.emptyList(), addressBook.getMemberList());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" public void resetData_null_throwsNullPointerException() {","lastModifiedDate":"2017-05-15","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.resetData(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" public void resetData_withValidReadOnlyAddressBook_replacesData() {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" AddressBook newData \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" addressBook.resetData(newData);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(newData, addressBook);","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" public void resetData_withDuplicateMembers_throwsDuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" // Two members with the same identity fields","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e newMembers \u003d Arrays.asList(ALICE, editedAlice);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" AddressBookStub newData \u003d new AddressBookStub(newMembers);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DuplicateMemberException.class, () -\u003e addressBook.resetData(newData));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e addressBook.hasMembers(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(addressBook.hasMembers(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberInAddressBook_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(addressBook.hasMembers(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberWithSameIdentityFieldsInAddressBook_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(addressBook.hasMembers(editedAlice));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" public void getMemberList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e addressBook.getMemberList().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d AddressBook.class.getCanonicalName() + \"{members\u003d\" + addressBook.getMemberList() + \"}\";","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" assertEquals(expected, addressBook.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" * A stub ReadOnlyAddressBook whose members list can violate interface constraints.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" private static class AddressBookStub implements ReadOnlyAddressBook {","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" private final ObservableList\u003cMember\u003e members \u003d FXCollections.observableArrayList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" AddressBookStub(Collection\u003cMember\u003e members) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":" this.members.setAll(members);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" @Override","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" public ObservableList\u003cMember\u003e getMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":" return members;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-12-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":33,"-":75}},{"path":"src/test/java/hallpointer/address/model/ModelManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.model.Model.PREDICATE_SHOW_ALL_MEMBERS;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BENSON;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.NameContainsKeywordsPredicate;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.testutil.AddressBookBuilder;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"public class ModelManagerTest {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private ModelManager modelManager \u003d new ModelManager();","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void constructor() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" assertEquals(new UserPrefs(), modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertEquals(new GuiSettings(), modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertEquals(new AddressBook(), new AddressBook(modelManager.getAddressBook()));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" public void setUserPrefs_nullUserPrefs_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setUserPrefs(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public void setUserPrefs_validUserPrefs_copiesUserPrefs() {","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"address/book/file/path\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" userPrefs.setGuiSettings(new GuiSettings(1, 2, 3, 4));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" modelManager.setUserPrefs(userPrefs);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" assertEquals(userPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // Modifying userPrefs should not modify modelManager\u0027s userPrefs","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs oldUserPrefs \u003d new UserPrefs(userPrefs);","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" userPrefs.setAddressBookFilePath(Paths.get(\"new/address/book/file/path\"));","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" assertEquals(oldUserPrefs, modelManager.getUserPrefs());","lastModifiedDate":"2018-12-06","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" public void setGuiSettings_nullGuiSettings_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setGuiSettings(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" public void setGuiSettings_validGuiSettings_setsGuiSettings() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" GuiSettings guiSettings \u003d new GuiSettings(1, 2, 3, 4);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" modelManager.setGuiSettings(guiSettings);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(guiSettings, modelManager.getGuiSettings());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_nullPath_throwsNullPointerException() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.setAddressBookFilePath(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void setAddressBookFilePath_validPath_setsAddressBookFilePath() {","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" Path path \u003d Paths.get(\"address/book/file/path\");","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" modelManager.setAddressBookFilePath(path);","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(path, modelManager.getAddressBookFilePath());","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e modelManager.hasMember(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberNotInAddressBook_returnsFalse() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(modelManager.hasMember(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" public void hasMember_memberInAddressBook_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" modelManager.addMember(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(modelManager.hasMember(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" public void getFilteredMemberList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e modelManager.getFilteredMemberList().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" AddressBook addressBook \u003d new AddressBookBuilder().withMember(ALICE).withMember(BENSON).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" AddressBook differentAddressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" UserPrefs userPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" modelManager \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2018-08-06","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" ModelManager modelManagerCopy \u003d new ModelManager(addressBook, userPrefs);","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManagerCopy));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertTrue(modelManager.equals(modelManager));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(null));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(5));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"-"},"content":" // different addressBook -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"-"},"content":" // different filteredList -\u003e returns false","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"-"},"content":" String[] keywords \u003d ALICE.getName().fullName.split(\"\\\\s+\");","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":" modelManager.updateFilteredMemberList(new NameContainsKeywordsPredicate(Arrays.asList(keywords)));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs)));","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"-"},"content":" // resets modelManager to initial state for upcoming tests","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"starchypotatocode"},"content":" modelManager.updateFilteredMemberList(PREDICATE_SHOW_ALL_MEMBERS);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"-"},"content":" // different userPrefs -\u003e returns false","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"-"},"content":" UserPrefs differentUserPrefs \u003d new UserPrefs();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"-"},"content":" differentUserPrefs.setAddressBookFilePath(Paths.get(\"differentFilePath\"));","lastModifiedDate":"2018-08-09","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"-"},"content":" assertFalse(modelManager.equals(new ModelManager(addressBook, differentUserPrefs)));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-05-31","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":16,"-":116}},{"path":"src/test/java/hallpointer/address/model/member/MemberTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BOB;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"public class MemberTest {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public void asObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" Member member \u003d new MemberBuilder().build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, () -\u003e member.getTags().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-09-01","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" public void isSameMember() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(ALICE.isSameMember(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(ALICE.isSameMember(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" // same name, all other attributes different -\u003e returns true","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(ALICE.isSameMember(editedAlice));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" // different name, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" editedAlice \u003d new MemberBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(ALICE.isSameMember(editedAlice));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // name differs in case, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" Member editedBob \u003d new MemberBuilder(BOB).withName(VALID_NAME_BOB.toLowerCase()).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(BOB.isSameMember(editedBob));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" // name has trailing spaces, all other attributes same -\u003e returns false","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" String nameWithTrailingSpaces \u003d VALID_NAME_BOB + \" \";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" editedBob \u003d new MemberBuilder(BOB).withName(nameWithTrailingSpaces).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(BOB.isSameMember(editedBob));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" Member aliceCopy \u003d new MemberBuilder(ALICE).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(aliceCopy));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertTrue(ALICE.equals(ALICE));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(null));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" // different type -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(5));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(BOB));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // different name -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withName(VALID_NAME_BOB).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" // different telegram -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" editedAlice \u003d new MemberBuilder(ALICE).withTelegram(VALID_TELEGRAM_BOB).build();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" // different address -\u003e returns false","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" // different tags -\u003e returns false","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":" editedAlice \u003d new MemberBuilder(ALICE).withTags(VALID_TAG_HUSBAND).build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertFalse(ALICE.equals(editedAlice));","lastModifiedDate":"2018-04-18","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-04-19","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" String expected \u003d Member.class.getCanonicalName() + \"{name\u003d\" + ALICE.getName()","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" + \", telegram\u003d\" + ALICE.getTelegram() + \", room\u003d\" + ALICE.getRoom()","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" + \", tags\u003d\" + ALICE.getTags() + \"}\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":" assertEquals(expected, ALICE.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-09-01","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":31,"-":64}},{"path":"src/test/java/hallpointer/address/model/member/NameContainsKeywordsPredicateTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Collections;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class NameContainsKeywordsPredicateTest {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" List\u003cString\u003e firstPredicateKeywordList \u003d Collections.singletonList(\"first\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" List\u003cString\u003e secondPredicateKeywordList \u003d Arrays.asList(\"first\", \"second\");","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicate \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate secondPredicate \u003d new NameContainsKeywordsPredicate(secondPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate firstPredicateCopy \u003d new NameContainsKeywordsPredicate(firstPredicateKeywordList);","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertTrue(firstPredicate.equals(firstPredicateCopy));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(1));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(null));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" // different member -\u003e returns false","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" assertFalse(firstPredicate.equals(secondPredicate));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" public void test_nameContainsKeywords_returnsTrue() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" // One keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.singletonList(\"Alice\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // Multiple keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Alice\", \"Bob\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" // Only one matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" // Two matching keywords, out of order","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Bob\", \"Carol\", \"Alice\"));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Carol\").build()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" // Mixed-case keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aLIce\", \"bOB\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(predicate.test(new MemberBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" public void test_nameDoesNotContainKeywords_returnsFalse() {","lastModifiedDate":"2017-08-15","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" // Zero keywords","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(Collections.emptyList());","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(predicate.test(new MemberBuilder().withName(\"Alice\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" // Non-matching keyword","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"Carol\"));","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(predicate.test(new MemberBuilder().withName(\"Alice Bob\").build()));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" // Keywords match telegram and room, but does not match name","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" predicate \u003d new NameContainsKeywordsPredicate(Arrays.asList(\"aliceinwonderland\", \"1/2/3\"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(predicate.test(new MemberBuilder().withName(\"Alice\").withTelegram(\"aliceinwonderland\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"1/2/3\").build()));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-06-12","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" public void toStringMethod() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" List\u003cString\u003e keywords \u003d List.of(\"keyword1\", \"keyword2\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" NameContainsKeywordsPredicate predicate \u003d new NameContainsKeywordsPredicate(keywords);","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" String expected \u003d NameContainsKeywordsPredicate.class.getCanonicalName() + \"{keywords\u003d\" + keywords + \"}\";","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" assertEquals(expected, predicate.toString());","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-06-12","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":16,"-":73}},{"path":"src/test/java/hallpointer/address/model/member/NameTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"public class NameTest {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e new Name(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" public void constructor_invalidName_throwsIllegalArgumentException() {","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" String invalidName \u003d \"\";","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Name(invalidName));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-30","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" public void isValidName() {","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" // null name","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e Name.isValidName(null));","lastModifiedDate":"2019-03-14","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-12-04","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" // invalid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"\")); // empty string","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\" \")); // spaces only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"^\")); // only non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" assertFalse(Name.isValidName(\"peter*\")); // contains non-alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" // valid name","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter jack\")); // alphabets only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"12345\")); // numbers only","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"peter the 2nd\")); // alphanumeric characters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"Capital Tan\")); // with capital letters","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" assertTrue(Name.isValidName(\"David Roger Jackson Ray Jr 2nd\")); // long names","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-01-16","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" public void equals() {","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" Name name \u003d new Name(\"Valid Name\");","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" // same values -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" assertTrue(name.equals(new Name(\"Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" // same object -\u003e returns true","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" assertTrue(name.equals(name));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" // null -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" assertFalse(name.equals(null));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" // different types -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" assertFalse(name.equals(5.0f));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" // different values -\u003e returns false","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" assertFalse(name.equals(new Name(\"Other Valid Name\")));","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-02-23","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-01-16","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":59}},{"path":"src/test/java/hallpointer/address/model/member/RoomTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"public class RoomTest {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e new Room(null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_invalidRoom_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" String invalidRoom \u003d \"\";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Room(invalidRoom));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" public void isValidRoom() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" // null room","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e Room.isValidRoom(null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" // invalid rooms","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"\")); // empty string","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"//\")); // slashes only","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"-1/2/3\")); // invalid number","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"1/0.2/3\")); // invalid decimal","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"1/2/\")); // missing numbers","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"1/2\")); // insufficient input","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"3 2 3\")); // no slashes","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"/1/2/3/\")); // too many slashes","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"1/2/3/4\")); // incorrect extra input","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Room.isValidRoom(\"3/2/3 0\")); // also incorrect extra input","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" // valid rooms","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Room.isValidRoom(\"1/2/3\"));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Room.isValidRoom(\"1/2/0\")); // 0 is also acceptable here","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Room.isValidRoom(\"1000/2000/3000\")); // long room numbers","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Room.isValidRoom(\"1000000000000/9/9\")); // duplicate numbers","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" public void equals() {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" Room room \u003d new Room(\"1/2/3\");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(room.equals(new Room(\"1/2/3\")));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(room.equals(room));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(room.equals(null));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(room.equals(5.0f));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(room.equals(new Room(\"2/3/4\")));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-10-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":68}},{"path":"src/test/java/hallpointer/address/model/member/TelegramTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"public class TelegramTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_null_throwsNullPointerException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e new Telegram(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" public void constructor_invalidTelegram_throwsIllegalArgumentException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" String invalidTelegram \u003d \"\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalArgumentException.class, () -\u003e new Telegram(invalidTelegram));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" public void isValidTelegram() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" // null telegram","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e Telegram.isValidTelegram(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegrams: length \u0026 character set","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"\")); // empty string","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"eeee\")); // less than 5 chars","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"r456e\u0026\")); // non-underscore symbols","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"ben ten\")); // spaces","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"cccccdddddeeeeefffffggggghhhhhiii\")); // more than 33 characters","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a_\")); // certain regexes fail this","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" // invalid telegrams: starting and ending requirements","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"_aaaaaa\")); // start cannot be underscores","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(Telegram.isValidTelegram(\"1aaaaaa\")); // start cannot be numberic","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"tota1\")); // end cannot be numeric","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" // valid telegrams","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"AAAAA\")); // exactly 5 chars, just caps","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"bbbbbbbb\")); // just lowercase","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"A22W_f_wfe3\")); // numbers and underscores ok","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"A_____A\")); // consecutive underscores ok","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ\")); // exactly 32 chars","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(Telegram.isValidTelegram(\"Ra_a_a_a_a_a_a_a_a_a_a_a_a_a_a_a\")); // certain regexes may fail this too","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" public void equals() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" Telegram telegram \u003d new Telegram(\"vegetable\");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" // same values -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(telegram.equals(new Telegram(\"vegetable\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" // same object -\u003e returns true","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(telegram.equals(telegram));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" // null -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(telegram.equals(null));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" // different types -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(telegram.equals(5.0f));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" // different values -\u003e returns false","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(telegram.equals(new Telegram(\"banana\")));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":69}},{"path":"src/test/java/hallpointer/address/model/member/UniqueMemberListTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BOB;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertTrue;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import java.util.Arrays;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":"import java.util.Collections;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import java.util.List;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.DuplicateMemberException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.exceptions.MemberNotFoundException;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.MemberBuilder;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"public class UniqueMemberListTest {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private final UniqueMemberList uniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" public void contains_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.contains(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" public void contains_memberNotInList_returnsFalse() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" assertFalse(uniqueMemberList.contains(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" public void contains_memberInList_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(uniqueMemberList.contains(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" public void contains_memberWithSameIdentityFieldsInList_returnsTrue() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" .build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" assertTrue(uniqueMemberList.contains(editedAlice));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" public void add_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.add(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" public void add_duplicateMember_throwsDuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DuplicateMemberException.class, () -\u003e uniqueMemberList.add(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_nullTargetMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.setMember(null, ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_nullEditedMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.setMember(ALICE, null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_targetMemberNotInList_throwsMemberNotFoundException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(MemberNotFoundException.class, () -\u003e uniqueMemberList.setMember(ALICE, ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_editedMemberIsSameMember_success() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMember(ALICE, ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_editedMemberHasSameIdentity_success() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" Member editedAlice \u003d new MemberBuilder(ALICE).withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" .build();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMember(ALICE, editedAlice);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(editedAlice);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_editedMemberHasDifferentIdentity_success() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMember(ALICE, BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"starchypotatocode"},"content":" public void setMember_editedMemberHasNonUniqueIdentity_throwsDuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DuplicateMemberException.class, () -\u003e uniqueMemberList.setMember(ALICE, BOB));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":111,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":112,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":113,"author":{"gitId":"starchypotatocode"},"content":" public void remove_nullMember_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":114,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.remove(null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":115,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":116,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":117,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":118,"author":{"gitId":"starchypotatocode"},"content":" public void remove_memberDoesNotExist_throwsMemberNotFoundException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":119,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(MemberNotFoundException.class, () -\u003e uniqueMemberList.remove(ALICE));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":120,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":121,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":122,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":123,"author":{"gitId":"starchypotatocode"},"content":" public void remove_existingMember_removesMember() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":124,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":125,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.remove(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":126,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":127,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":128,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":129,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":130,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":131,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_nullUniqueMemberList_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":132,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.setMembers((UniqueMemberList) null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":133,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":134,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":135,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":136,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_uniqueMemberList_replacesOwnListWithProvidedUniqueMemberList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":137,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":138,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":139,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":140,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMembers(expectedUniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":141,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":142,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":143,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":144,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":145,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_nullList_throwsNullPointerException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":146,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(NullPointerException.class, () -\u003e uniqueMemberList.setMembers((List\u003cMember\u003e) null));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":147,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":148,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":149,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":150,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_list_replacesOwnListWithProvidedList() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":151,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.add(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":152,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e memberList \u003d Collections.singletonList(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":153,"author":{"gitId":"starchypotatocode"},"content":" uniqueMemberList.setMembers(memberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":154,"author":{"gitId":"starchypotatocode"},"content":" UniqueMemberList expectedUniqueMemberList \u003d new UniqueMemberList();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":155,"author":{"gitId":"starchypotatocode"},"content":" expectedUniqueMemberList.add(BOB);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":156,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(expectedUniqueMemberList, uniqueMemberList);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":157,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":158,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":159,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":160,"author":{"gitId":"starchypotatocode"},"content":" public void setMembers_listWithDuplicateMembers_throwsDuplicateMemberException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":161,"author":{"gitId":"starchypotatocode"},"content":" List\u003cMember\u003e listWithDuplicateMembers \u003d Arrays.asList(ALICE, ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":162,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DuplicateMemberException.class, () -\u003e uniqueMemberList.setMembers(listWithDuplicateMembers));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":163,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":164,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":165,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":166,"author":{"gitId":"starchypotatocode"},"content":" public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":167,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(UnsupportedOperationException.class, ()","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":168,"author":{"gitId":"starchypotatocode"},"content":" -\u003e uniqueMemberList.asUnmodifiableObservableList().remove(0));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":169,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":170,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":171,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":172,"author":{"gitId":"starchypotatocode"},"content":" public void toStringMethod() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":173,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(uniqueMemberList.asUnmodifiableObservableList().toString(), uniqueMemberList.toString());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":174,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":175,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-09-24","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":175}},{"path":"src/test/java/hallpointer/address/model/util/SampleDataUtilTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"starchypotatocode"},"content":"package hallpointer.address.model.util;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"/**","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":" * Tests whether the SampleDataUtil\u0027s data remain valid after changes elsewhere.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" */","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"public class SampleDataUtilTest {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"starchypotatocode"},"content":" public void getSampleMembers_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" assertDoesNotThrow(SampleDataUtil::getSampleMembers);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":" @Test","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":" public void getSampleAddressBook_success() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" assertDoesNotThrow(SampleDataUtil::getSampleAddressBook);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" }","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":"}","lastModifiedDate":"2024-10-09","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":21}},{"path":"src/test/java/hallpointer/address/storage/JsonAdaptedMemberTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.storage.JsonAdaptedMember.MISSING_FIELD_MESSAGE_FORMAT;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.BENSON;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":"public class JsonAdaptedMemberTest {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final String INVALID_NAME \u003d \"R@chel\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private static final String INVALID_TELEGRAM \u003d \"+651234\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":" private static final String INVALID_ROOM \u003d \" \";","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final String INVALID_TAG \u003d \"#friend\";","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private static final String VALID_NAME \u003d BENSON.getName().toString();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" private static final String VALID_TELEGRAM \u003d BENSON.getTelegram().toString();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" private static final String VALID_ROOM \u003d BENSON.getRoom().toString();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" private static final List\u003cJsonAdaptedTag\u003e VALID_TAGS \u003d BENSON.getTags().stream()","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" .map(JsonAdaptedTag::new)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" .collect(Collectors.toList());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_validMemberDetails_returnsMember() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d new JsonAdaptedMember(BENSON);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(BENSON, member.toModelType());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" public void toModelType_invalidName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" new JsonAdaptedMember(INVALID_NAME, VALID_TELEGRAM, VALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" String expectedMessage \u003d Name.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" public void toModelType_nullName_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d new JsonAdaptedMember(null, VALID_TELEGRAM, VALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_invalidTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" new JsonAdaptedMember(VALID_NAME, INVALID_TELEGRAM, VALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d Telegram.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_nullTelegram_throwsIllegalValueException() {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d new JsonAdaptedMember(VALID_NAME, null, VALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Telegram.class.getSimpleName());","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" public void toModelType_invalidAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"starchypotatocode"},"content":" new JsonAdaptedMember(VALID_NAME, VALID_TELEGRAM, INVALID_ROOM, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d Room.MESSAGE_CONSTRAINTS;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" public void toModelType_nullAddress_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d new JsonAdaptedMember(VALID_NAME, VALID_TELEGRAM, null, VALID_TAGS);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"starchypotatocode"},"content":" String expectedMessage \u003d String.format(MISSING_FIELD_MESSAGE_FORMAT, Room.class.getSimpleName());","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, expectedMessage, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" public void toModelType_invalidTags_throwsIllegalValueException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" List\u003cJsonAdaptedTag\u003e invalidTags \u003d new ArrayList\u003c\u003e(VALID_TAGS);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":" invalidTags.add(new JsonAdaptedTag(INVALID_TAG));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"starchypotatocode"},"content":" JsonAdaptedMember member \u003d","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"starchypotatocode"},"content":" new JsonAdaptedMember(VALID_NAME, VALID_TELEGRAM, VALID_ROOM, invalidTags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, member::toModelType);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":37,"-":55}},{"path":"src/test/java/hallpointer/address/storage/JsonAddressBookStorageTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.ALICE;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.HOON;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.IDA;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertFalse;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.DataLoadingException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"public class JsonAddressBookStorageTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonAddressBookStorageTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" public void readAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e readAddressBook(null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" private java.util.Optional\u003cReadOnlyAddressBook\u003e readAddressBook(String filePath) throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" return new JsonAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return prefsFileInTestDataFolder !\u003d null","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder)","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" : null;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" public void read_missingFile_emptyResult() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" assertFalse(readAddressBook(\"NonExistentFile.json\").isPresent());","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" public void read_notJsonFormat_exceptionThrown() {","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"notJsonFormatAddressBook.json\"));","lastModifiedDate":"2023-06-14","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" public void readAddressBook_invalidMemberAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidMemberAddressBook.json\"));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"starchypotatocode"},"content":" public void readAddressBook_invalidAndValidMemberAddressBook_throwDataLoadingException() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(DataLoadingException.class, () -\u003e readAddressBook(\"invalidAndValidMemberAddressBook.json\"));","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void readAndSaveAddressBook_allInOrder_success() throws Exception {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" Path filePath \u003d testFolder.resolve(\"TempAddressBook.json\");","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":" JsonAddressBookStorage jsonAddressBookStorage \u003d new JsonAddressBookStorage(filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" // Save in new file and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" // Modify data, overwrite exiting file, and read back","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" original.addMember(HOON);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"starchypotatocode"},"content":" original.removeMember(ALICE);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original, filePath);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook(filePath).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"-"},"content":" // Save and read without specifying file path","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"starchypotatocode"},"content":" original.addMember(IDA);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":" jsonAddressBookStorage.saveAddressBook(original); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":" readBack \u003d jsonAddressBookStorage.readAddressBook().get(); // file path not specified","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":85,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(readBack));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":86,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":87,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":88,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":89,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":90,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullAddressBook_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":91,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(null, \"SomeFile.json\"));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":92,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":93,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":94,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":95,"author":{"gitId":"-"},"content":" * Saves {@code addressBook} at the specified {@code filePath}.","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":96,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":97,"author":{"gitId":"-"},"content":" private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":98,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":99,"author":{"gitId":"-"},"content":" new JsonAddressBookStorage(Paths.get(filePath))","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":100,"author":{"gitId":"-"},"content":" .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath));","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":101,"author":{"gitId":"-"},"content":" } catch (IOException ioe) {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":102,"author":{"gitId":"-"},"content":" throw new AssertionError(\"There should not be an error writing to the file.\", ioe);","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":103,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":104,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":105,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":106,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":107,"author":{"gitId":"-"},"content":" public void saveAddressBook_nullFilePath_throwsNullPointerException() {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":108,"author":{"gitId":"-"},"content":" assertThrows(NullPointerException.class, () -\u003e saveAddressBook(new AddressBook(), null));","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":109,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":110,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":11,"-":99}},{"path":"src/test/java/hallpointer/address/storage/JsonSerializableAddressBookTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.testutil.Assert.assertThrows;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-27","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.exceptions.IllegalValueException;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.util.JsonUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.testutil.TypicalMembers;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"public class JsonSerializableAddressBookTest {","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" private static final Path TEST_DATA_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"JsonSerializableAddressBookTest\");","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" private static final Path TYPICAL_MEMBERS_FILE \u003d TEST_DATA_FOLDER.resolve(\"typicalMembersAddressBook.json\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" private static final Path INVALID_MEMBER_FILE \u003d TEST_DATA_FOLDER.resolve(\"invalidMemberAddressBook.json\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" private static final Path DUPLICATE_MEMBER_FILE \u003d TEST_DATA_FOLDER.resolve(\"duplicateMemberAddressBook.json\");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_typicalMembersFile_success() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(TYPICAL_MEMBERS_FILE,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" AddressBook addressBookFromFile \u003d dataFromFile.toModelType();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" AddressBook typicalMembersAddressBook \u003d TypicalMembers.getTypicalAddressBook();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" assertEquals(addressBookFromFile, typicalMembersAddressBook);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_invalidMemberFile_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(INVALID_MEMBER_FILE,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" assertThrows(IllegalValueException.class, dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public void toModelType_duplicateMembers_throwsIllegalValueException() throws Exception {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" JsonSerializableAddressBook dataFromFile \u003d JsonUtil.readJsonFile(DUPLICATE_MEMBER_FILE,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" JsonSerializableAddressBook.class).get();","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" assertThrows(IllegalValueException.class, JsonSerializableAddressBook.MESSAGE_DUPLICATE_MEMBER,","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" dataFromFile::toModelType);","lastModifiedDate":"2019-03-23","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-08-13","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2018-08-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":13,"-":34}},{"path":"src/test/java/hallpointer/address/storage/StorageManagerTest.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.storage;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.testutil.TypicalMembers.getTypicalAddressBook;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static org.junit.jupiter.api.Assertions.assertNotNull;","lastModifiedDate":"2019-03-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.BeforeEach;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import org.junit.jupiter.api.io.TempDir;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.GuiSettings;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"import hallpointer.address.model.ReadOnlyAddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.model.UserPrefs;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"public class StorageManagerTest {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" @TempDir","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" public Path testFolder;","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" private StorageManager storageManager;","lastModifiedDate":"2017-04-01","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" @BeforeEach","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public void setUp() {","lastModifiedDate":"2016-10-19","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" JsonAddressBookStorage addressBookStorage \u003d new JsonAddressBookStorage(getTempFilePath(\"ab\"));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" JsonUserPrefsStorage userPrefsStorage \u003d new JsonUserPrefsStorage(getTempFilePath(\"prefs\"));","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" storageManager \u003d new StorageManager(addressBookStorage, userPrefsStorage);","lastModifiedDate":"2017-02-25","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" private Path getTempFilePath(String fileName) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" return testFolder.resolve(fileName);","lastModifiedDate":"2019-04-25","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" public void prefsReadSave() throws Exception {","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" * {@link JsonUserPrefsStorage} class.","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonUserPrefsStorageTest} class.","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" UserPrefs original \u003d new UserPrefs();","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" original.setGuiSettings(new GuiSettings(300, 600, 4, 6));","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" storageManager.saveUserPrefs(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" UserPrefs retrieved \u003d storageManager.readUserPrefs().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" assertEquals(original, retrieved);","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" public void addressBookReadSave() throws Exception {","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" /*","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" * Note: This is an integration test that verifies the StorageManager is properly wired to the","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" * {@link JsonAddressBookStorage} class.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" * More extensive testing of UserPref saving/reading is done in {@link JsonAddressBookStorageTest} class.","lastModifiedDate":"2018-11-27","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" AddressBook original \u003d getTypicalAddressBook();","lastModifiedDate":"2017-07-19","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" storageManager.saveAddressBook(original);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" ReadOnlyAddressBook retrieved \u003d storageManager.readAddressBook().get();","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" assertEquals(original, new AddressBook(retrieved));","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" @Test","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" public void getAddressBookFilePath() {","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" assertNotNull(storageManager.getAddressBookFilePath());","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-01","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":1,"-":67}},{"path":"src/test/java/hallpointer/address/testutil/AddressBookBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" * A utility class to help with building Addressbook objects.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":" * Example usage: \u003cbr\u003e","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" * {@code AddressBook ab \u003d new AddressBookBuilder().withMember(\"John\", \"Doe\").build();}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"public class AddressBookBuilder {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" private AddressBook addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" public AddressBookBuilder() {","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":" addressBook \u003d new AddressBook();","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-31","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" public AddressBookBuilder(AddressBook addressBook) {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" this.addressBook \u003d addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" * Adds a new {@code Member} to the {@code AddressBook} that we are building.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" public AddressBookBuilder withMember(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"starchypotatocode"},"content":" addressBook.addMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" public AddressBook build() {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return addressBook;","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":5,"-":29}},{"path":"src/test/java/hallpointer/address/testutil/MemberBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.util.HashSet;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"import hallpointer.address.model.util.SampleDataUtil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"starchypotatocode"},"content":" * A utility class to help with building Member objects.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":"public class MemberBuilder {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" public static final String DEFAULT_NAME \u003d \"Amy Bee\";","lastModifiedDate":"2020-12-18","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"starchypotatocode"},"content":" public static final String DEFAULT_TELEGRAM \u003d \"beeHappy\";","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"taggyhan"},"content":" public static final String DEFAULT_ROOM \u003d \"5/2/207\";","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" private Name name;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" private Telegram telegram;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" private Room room;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" private Set\u003cTag\u003e tags;","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" * Creates a {@code MemberBuilder} with the default details.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2020-05-27","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" name \u003d new Name(DEFAULT_NAME);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" telegram \u003d new Telegram(DEFAULT_TELEGRAM);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" room \u003d new Room(DEFAULT_ROOM);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":" tags \u003d new HashSet\u003c\u003e();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" * Initializes the MemberBuilder with the data of {@code memberToCopy}.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder(Member memberToCopy) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" name \u003d memberToCopy.getName();","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"starchypotatocode"},"content":" telegram \u003d memberToCopy.getTelegram();","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" room \u003d memberToCopy.getRoom();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" tags \u003d new HashSet\u003c\u003e(memberToCopy.getTags());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-12-11","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" * Sets the {@code Name} of the {@code Member} that we are building.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder withName(String name) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" this.name \u003d new Name(name);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"starchypotatocode"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code Member} that we are building.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder withTags(String ... tags) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" this.tags \u003d SampleDataUtil.getTagSet(tags);","lastModifiedDate":"2017-12-20","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"starchypotatocode"},"content":" * Sets the {@code Room} of the {@code Member} that we are building.","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder withRoom(String room) {","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" this.room \u003d new Room(room);","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"starchypotatocode"},"content":" * Sets the {@code Telegram} of the {@code Member} that we are building.","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"starchypotatocode"},"content":" public MemberBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"starchypotatocode"},"content":" this.telegram \u003d new Telegram(telegram);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":" return this;","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":78,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":79,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":80,"author":{"gitId":"starchypotatocode"},"content":" public Member build() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":81,"author":{"gitId":"starchypotatocode"},"content":" return new Member(name, telegram, room, tags);","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":82,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":83,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-03","isFullCredit":false},{"lineNumber":84,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-03","isFullCredit":false}],"authorContributionMap":{"taggyhan":1,"starchypotatocode":31,"-":52}},{"path":"src/test/java/hallpointer/address/testutil/MemberUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_NAME;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_ROOM;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TAG;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.parser.CliSyntax.PREFIX_TELEGRAM;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import java.util.Set;","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.logic.commands.AddMemberCommand;","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand.UpdateMemberDescriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"starchypotatocode"},"content":" * A utility class for Member.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"starchypotatocode"},"content":"public class MemberUtil {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"starchypotatocode"},"content":" * Returns an add command string for adding the {@code member}.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"starchypotatocode"},"content":" public static String getAddCommand(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" return AddMemberCommand.COMMAND_WORD + \" \" + getMemberDetails(member);","lastModifiedDate":"2024-10-11","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" * Returns the part of command string for the given {@code member}\u0027s details.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-04-06","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" public static String getMemberDetails(Member member) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" sb.append(PREFIX_NAME + member.getName().fullName + \" \");","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" sb.append(PREFIX_TELEGRAM + member.getTelegram().value + \" \");","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" sb.append(PREFIX_ROOM + member.getRoom().value + \" \");","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" member.getTags().stream().forEach(","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"-"},"content":" s -\u003e sb.append(PREFIX_TAG + s.tagName + \" \")","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" );","lastModifiedDate":"2017-05-09","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-04-05","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":" * Returns the part of command string for the given {@code UpdateMemberDescriptor}\u0027s details.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"taggyhan"},"content":" public static String getUpdateMemberDescriptorDetails(UpdateMemberDescriptor descriptor) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" StringBuilder sb \u003d new StringBuilder();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"-"},"content":" descriptor.getName().ifPresent(name -\u003e sb.append(PREFIX_NAME).append(name.fullName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" descriptor.getTelegram().ifPresent(","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"starchypotatocode"},"content":" telegram -\u003e sb.append(PREFIX_TELEGRAM).append(telegram.value).append(\" \"));","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" descriptor.getRoom().ifPresent(room -\u003e sb.append(PREFIX_ROOM).append(room.value).append(\" \"));","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"-"},"content":" if (descriptor.getTags().isPresent()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" Set\u003cTag\u003e tags \u003d descriptor.getTags().get();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"-"},"content":" if (tags.isEmpty()) {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"-"},"content":" sb.append(PREFIX_TAG);","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" } else {","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":" tags.forEach(s -\u003e sb.append(PREFIX_TAG).append(s.tagName).append(\" \"));","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" return sb.toString();","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2018-03-26","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-04-05","isFullCredit":false}],"authorContributionMap":{"taggyhan":3,"starchypotatocode":18,"-":39}},{"path":"src/test/java/hallpointer/address/testutil/TestUtil.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import java.io.IOException;","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import java.nio.file.Files;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"import java.nio.file.Path;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-01-19","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"-"},"content":"import hallpointer.address.model.Model;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":" * A utility class for test cases.","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"public class TestUtil {","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":" * Folder used for temp files created during testing. Ignored by Git.","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"-"},"content":" private static final Path SANDBOX_FOLDER \u003d Paths.get(\"src\", \"test\", \"data\", \"sandbox\");","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-10-16","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":" * Appends {@code fileName} to the sandbox folder path and returns the resulting path.","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"-"},"content":" * Creates the sandbox folder if it doesn\u0027t exist.","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"-"},"content":" public static Path getFilePathInSandboxFolder(String fileName) {","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" try {","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"-"},"content":" Files.createDirectories(SANDBOX_FOLDER);","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"-"},"content":" } catch (IOException e) {","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"-"},"content":" throw new RuntimeException(e);","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-28","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"-"},"content":" return SANDBOX_FOLDER.resolve(fileName);","lastModifiedDate":"2018-04-21","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-08-08","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" * Returns the middle index of the member in the {@code model}\u0027s member list.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"-"},"content":" public static Index getMidIndex(Model model) {","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" return Index.fromOneBased(model.getFilteredMemberList().size() / 2);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"starchypotatocode"},"content":" * Returns the last index of the member in the {@code model}\u0027s member list.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"-"},"content":" public static Index getLastIndex(Model model) {","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" return Index.fromOneBased(model.getFilteredMemberList().size());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" * Returns the member in the {@code model}\u0027s member list at {@code index}.","lastModifiedDate":"2024-09-23","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" public static Member getMember(Model model, Index index) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" return model.getFilteredMemberList().get(index.getZeroBased());","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-07-30","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-08-08","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":8,"-":47}},{"path":"src/test/java/hallpointer/address/testutil/TypicalIndexes.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import hallpointer.address.commons.core.index.Index;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"-"},"content":" * A utility class containing a list of {@code Index} objects to be used in tests.","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"public class TypicalIndexes {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":" public static final Index INDEX_FIRST_MEMBER \u003d Index.fromOneBased(1);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":" public static final Index INDEX_SECOND_MEMBER \u003d Index.fromOneBased(2);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"starchypotatocode"},"content":" public static final Index INDEX_THIRD_MEMBER \u003d Index.fromOneBased(3);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2017-08-05","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":3,"-":9}},{"path":"src/test/java/hallpointer/address/testutil/TypicalMembers.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_AMY;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_NAME_BOB;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_AMY;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_ROOM_BOB;","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"-"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_AMY;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"starchypotatocode"},"content":"import static hallpointer.address.logic.commands.CommandTestUtil.VALID_TELEGRAM_BOB;","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"-"},"content":"import java.util.ArrayList;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"-"},"content":"import java.util.Arrays;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"-"},"content":"import java.util.List;","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"-"},"content":"import hallpointer.address.model.AddressBook;","lastModifiedDate":"2024-09-15","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"starchypotatocode"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"-"},"content":"/**","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"starchypotatocode"},"content":" * A utility class containing a list of {@code Member} objects to be used in tests.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"starchypotatocode"},"content":"public class TypicalMembers {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"starchypotatocode"},"content":" public static final Member ALICE \u003d new MemberBuilder().withName(\"Alice Pauline\")","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"6/3/20\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(\"PauLice\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"-"},"content":" .withTags(\"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"starchypotatocode"},"content":" public static final Member BENSON \u003d new MemberBuilder().withName(\"Benson Meier\")","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"6/10/95\")","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(\"benson_meier\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"-"},"content":" .withTags(\"owesMoney\", \"friends\").build();","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"starchypotatocode"},"content":" public static final Member CARL \u003d new MemberBuilder().withName(\"Carl Kurz\").withTelegram(\"kurZ0123\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"7/8/10\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"starchypotatocode"},"content":" public static final Member DANIEL \u003d new MemberBuilder().withName(\"Daniel Meier\").withTelegram(\"whisperWhiz23\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"1/3/3\").withTags(\"friends\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"starchypotatocode"},"content":" public static final Member ELLE \u003d new MemberBuilder().withName(\"Elle Meyer\").withTelegram(\"meyer_for_lif3\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"4/5/55\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"starchypotatocode"},"content":" public static final Member FIONA \u003d new MemberBuilder().withName(\"Fiona Kunz\").withTelegram(\"FIONAKUNZ\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"8/10/300\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"starchypotatocode"},"content":" public static final Member GEORGE \u003d new MemberBuilder().withName(\"George Best\").withTelegram(\"B357650463\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"90/2/8\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"-"},"content":" // Manually added","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"starchypotatocode"},"content":" public static final Member HOON \u003d new MemberBuilder().withName(\"Hoon Meier\").withTelegram(\"meier__5002\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"7/7/45\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"starchypotatocode"},"content":" public static final Member IDA \u003d new MemberBuilder().withName(\"Ida Mueller\").withTelegram(\"idaMueller\")","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(\"6/4/38\").build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-22","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"starchypotatocode"},"content":" // Manually added - Member\u0027s details found in {@code CommandTestUtil}","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"starchypotatocode"},"content":" public static final Member AMY \u003d new MemberBuilder().withName(VALID_NAME_AMY)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_AMY)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(VALID_ROOM_AMY).withTags(VALID_TAG_FRIEND).build();","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"starchypotatocode"},"content":" public static final Member BOB \u003d new MemberBuilder().withName(VALID_NAME_BOB)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"starchypotatocode"},"content":" .withTelegram(VALID_TELEGRAM_BOB)","lastModifiedDate":"2024-10-09","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"starchypotatocode"},"content":" .withRoom(VALID_ROOM_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND)","lastModifiedDate":"2024-10-08","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"-"},"content":" .build();","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"-"},"content":" public static final String KEYWORD_MATCHING_MEIER \u003d \"Meier\"; // A keyword that matches MEIER","lastModifiedDate":"2017-09-21","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"starchypotatocode"},"content":" private TypicalMembers() {} // prevents instantiation","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-07-20","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"-"},"content":" /**","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"starchypotatocode"},"content":" * Returns an {@code AddressBook} with all the typical members.","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"-"},"content":" */","lastModifiedDate":"2017-07-26","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"-"},"content":" public static AddressBook getTypicalAddressBook() {","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"-"},"content":" AddressBook ab \u003d new AddressBook();","lastModifiedDate":"2017-08-05","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"starchypotatocode"},"content":" for (Member member : getTypicalMembers()) {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"starchypotatocode"},"content":" ab.addMember(member);","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-13","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"-"},"content":" return ab;","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2016-09-24","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"starchypotatocode"},"content":" public static List\u003cMember\u003e getTypicalMembers() {","lastModifiedDate":"2024-09-24","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"-"},"content":" return new ArrayList\u003c\u003e(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE));","lastModifiedDate":"2017-08-07","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2017-08-04","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2016-09-13","isFullCredit":false}],"authorContributionMap":{"starchypotatocode":39,"-":37}},{"path":"src/test/java/hallpointer/address/testutil/UpdateMemberDescriptorBuilder.java","fileType":"test-code","lines":[{"lineNumber":1,"author":{"gitId":"taggyhan"},"content":"package hallpointer.address.testutil;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":2,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":3,"author":{"gitId":"taggyhan"},"content":"import java.util.Set;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":4,"author":{"gitId":"taggyhan"},"content":"import java.util.stream.Collectors;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":5,"author":{"gitId":"taggyhan"},"content":"import java.util.stream.Stream;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":6,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":7,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.logic.commands.UpdateMemberCommand.UpdateMemberDescriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":8,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.model.member.Member;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":9,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.model.member.Name;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":10,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.model.member.Room;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":11,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.model.member.Telegram;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":12,"author":{"gitId":"taggyhan"},"content":"import hallpointer.address.model.tag.Tag;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":13,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":14,"author":{"gitId":"taggyhan"},"content":"/**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":15,"author":{"gitId":"taggyhan"},"content":" * A utility class to help with building UpdateMemberDescriptor objects.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":16,"author":{"gitId":"taggyhan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":17,"author":{"gitId":"taggyhan"},"content":"public class UpdateMemberDescriptorBuilder {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":18,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":19,"author":{"gitId":"taggyhan"},"content":" private UpdateMemberDescriptor descriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":20,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":21,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptorBuilder() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":22,"author":{"gitId":"taggyhan"},"content":" descriptor \u003d new UpdateMemberDescriptor();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":23,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":24,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":25,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptorBuilder(UpdateMemberDescriptor descriptor) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":26,"author":{"gitId":"taggyhan"},"content":" this.descriptor \u003d new UpdateMemberDescriptor(descriptor);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":27,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":28,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":29,"author":{"gitId":"taggyhan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":30,"author":{"gitId":"taggyhan"},"content":" * Returns an {@code UpdateMemberDescriptor} with fields containing {@code member}\u0027s details","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":31,"author":{"gitId":"taggyhan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":32,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptorBuilder(Member member) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":33,"author":{"gitId":"taggyhan"},"content":" descriptor \u003d new UpdateMemberDescriptor();","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":34,"author":{"gitId":"taggyhan"},"content":" descriptor.setName(member.getName());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":35,"author":{"gitId":"taggyhan"},"content":" descriptor.setTelegram(member.getTelegram());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":36,"author":{"gitId":"taggyhan"},"content":" descriptor.setRoom(member.getRoom());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":37,"author":{"gitId":"taggyhan"},"content":" descriptor.setTags(member.getTags());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":38,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":39,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":40,"author":{"gitId":"taggyhan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":41,"author":{"gitId":"taggyhan"},"content":" * Sets the {@code Name} of the {@code UpdateMemberDescriptor} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":42,"author":{"gitId":"taggyhan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":43,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptorBuilder withName(String name) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":44,"author":{"gitId":"taggyhan"},"content":" descriptor.setName(new Name(name));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":45,"author":{"gitId":"taggyhan"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":46,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":47,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":48,"author":{"gitId":"taggyhan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":49,"author":{"gitId":"taggyhan"},"content":" * Sets the {@code Telegram} of the {@code UpdateMemberDescriptor} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":50,"author":{"gitId":"taggyhan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":51,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptorBuilder withTelegram(String telegram) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":52,"author":{"gitId":"taggyhan"},"content":" descriptor.setTelegram(new Telegram(telegram));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":53,"author":{"gitId":"taggyhan"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":54,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":55,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":56,"author":{"gitId":"taggyhan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":57,"author":{"gitId":"taggyhan"},"content":" * Sets the {@code Room} of the {@code UpdateMemberDescriptor} that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":58,"author":{"gitId":"taggyhan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":59,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptorBuilder withRoom(String room) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":60,"author":{"gitId":"taggyhan"},"content":" descriptor.setRoom(new Room(room));","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":61,"author":{"gitId":"taggyhan"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":62,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":63,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":64,"author":{"gitId":"taggyhan"},"content":" /**","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":65,"author":{"gitId":"taggyhan"},"content":" * Parses the {@code tags} into a {@code Set\u003cTag\u003e} and set it to the {@code UpdateMemberDescriptor}","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":66,"author":{"gitId":"taggyhan"},"content":" * that we are building.","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":67,"author":{"gitId":"taggyhan"},"content":" */","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":68,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptorBuilder withTags(String... tags) {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":69,"author":{"gitId":"taggyhan"},"content":" Set\u003cTag\u003e tagSet \u003d Stream.of(tags).map(Tag::new).collect(Collectors.toSet());","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":70,"author":{"gitId":"taggyhan"},"content":" descriptor.setTags(tagSet);","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":71,"author":{"gitId":"taggyhan"},"content":" return this;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":72,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":73,"author":{"gitId":"taggyhan"},"content":"","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":74,"author":{"gitId":"taggyhan"},"content":" public UpdateMemberDescriptor build() {","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":75,"author":{"gitId":"taggyhan"},"content":" return descriptor;","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":76,"author":{"gitId":"taggyhan"},"content":" }","lastModifiedDate":"2024-10-12","isFullCredit":false},{"lineNumber":77,"author":{"gitId":"taggyhan"},"content":"}","lastModifiedDate":"2024-10-12","isFullCredit":false}],"authorContributionMap":{"taggyhan":77}}] diff --git a/AY2425S1-CS2103T-W14-3_tp_master/commits.json b/AY2425S1-CS2103T-W14-3_tp_master/commits.json index 0f45e9ea..f0326fdb 100644 --- a/AY2425S1-CS2103T-W14-3_tp_master/commits.json +++ b/AY2425S1-CS2103T-W14-3_tp_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"yuvrajaryan":[{"date":"2024-09-30","commitResults":[{"hash":"e05eaa37e6dcde26cf217648ecec7d95f05fd900","isMergeCommit":false,"messageTitle":"Modifies AboutUs.md file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":43}}},{"hash":"19ae4355aa190a237a1952fac38ae9de9811531b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into task4.1","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8871260e48537451163835075c788b2645c547e9","isMergeCommit":false,"messageTitle":"Update Target User Profile and Value Proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"c19e396b3b0c27797b6679cea2312e6dda5ee9f1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into targetuserprofile","messageBody":"","fileTypesAndContributionMap":{}}]}],"taggyhan":[{"date":"2024-09-30","commitResults":[{"hash":"69a11b3e92fd097ea248fd90d6adef0b2ac5e16a","isMergeCommit":false,"messageTitle":"Add Tag\u0027s Details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":1}}},{"hash":"5b0acf96dfc73b41e64cb9cdf4906bd5631fc77b","isMergeCommit":true,"messageTitle":"Merge branch \u0027pr-haichen\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cb554550cc3c1c9ba9f1534ad84e911946649a89","isMergeCommit":true,"messageTitle":"Merge pull request #22 from QinHaichen12/branch-AboutUs","messageBody":"Update Haichen\u0027s details in AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"8296e8cc27af588c64fe7b24f2a37fc7981097cf","isMergeCommit":true,"messageTitle":"Update Aboutme","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"17e2bf5a7ef8ef712a0490cf25475e0810ccdda3","isMergeCommit":false,"messageTitle":"Fix Error in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":57}}},{"hash":"a96aa341d9b5c61447aa7e2fe8d9743d10a01bdd","isMergeCommit":false,"messageTitle":"Fix Error in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e2a96c0fd778305b901178aff373f7e967785f83","isMergeCommit":true,"messageTitle":"Merge pull request #39 from starchypotatocode/branch-Update-Website","messageBody":"Week 7 Task 2 - B","fileTypesAndContributionMap":{}},{"hash":"7de788513c8dfd493a4fed00d1438415d24e3956","isMergeCommit":true,"messageTitle":"Merge pull request #36 from starchypotatocode/branch-Update-Sources","messageBody":"Week 7 Task 2 - A2 \u0026 A3","fileTypesAndContributionMap":{}},{"hash":"c5e95bcb747d12db89b730dd04e79bc36a26638d","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fac2b25383da897a4d1014ac07e12b537eb458b6","isMergeCommit":true,"messageTitle":"Merge pull request #38 from yuvrajaryan/targetuserprofile","messageBody":"Update Target User Profile and Value Proposition","fileTypesAndContributionMap":{}},{"hash":"d87e94d1e26e4646af0fb225c350fe2067171ff2","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"a915bf2a017665d0714f146892576edd9c4dd13b","isMergeCommit":false,"messageTitle":"Update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":74,"deletions":3}}},{"hash":"84eddd0ecede83ef919dca45321faf6b0e1ebd1b","isMergeCommit":false,"messageTitle":"Update Index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":6}}},{"hash":"7b6eaf6d333303a9074dcd48975c795a17437997","isMergeCommit":true,"messageTitle":"Merge pull request #40 from keithxun/branch-NFR","messageBody":"Branch nfr","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"8ba74263f5736f26e27f7f647f915302ab8d9fb6","isMergeCommit":true,"messageTitle":"Merge pull request #59 from starchypotatocode/branch-RenameClasses","messageBody":"Rename Command classes","fileTypesAndContributionMap":{}}]}],"QinHaichen12":[{"date":"2024-09-28","commitResults":[{"hash":"cf641cf7dabbbaf4a44f5b0448a1c512fab3f581","isMergeCommit":true,"messageTitle":"Merge pull request #14 from QinHaichen12/branch-Add-Photo","messageBody":"add photo","fileTypesAndContributionMap":{}}]},{"date":"2024-09-30","commitResults":[{"hash":"7082fd1c4629fe70e2f822822a634424afa00d01","isMergeCommit":false,"messageTitle":"add about us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":42}}},{"hash":"a879979e50b2115ec7f58a8569e59100a4589440","isMergeCommit":false,"messageTitle":"add personal md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"6d9bd1e939fb30fdf8bd1a135b6c7c0c0d0ffebd","isMergeCommit":true,"messageTitle":"merge master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"010a8acf2c457b42ef9170a9a3690049ae3e904f","isMergeCommit":true,"messageTitle":"merge master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"65cf8617cc169ed01053e0cf0e5b415242dc057a","isMergeCommit":false,"messageTitle":"add use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":232,"deletions":34}}},{"hash":"af204fb05cae9cd5183cd5479a0b8db940398966","isMergeCommit":true,"messageTitle":"Merge pull request #41 from taggyhan/branch-glossary","messageBody":"Week 7 Task 3 - Compile Glossary","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"be8517c1d3f500bb1d8f897041d8d03b96e43f24","isMergeCommit":true,"messageTitle":"Merge pull request #54 from keithxun/branch-Add-Session","messageBody":"Branch add session","fileTypesAndContributionMap":{}},{"hash":"ea327312a56574b26b77cc0b92b36a03471a6aac","isMergeCommit":true,"messageTitle":"Merge pull request #50 from starchypotatocode/branch-EditMemberFields","messageBody":"Change fields of Member and update tests","fileTypesAndContributionMap":{}}]}],"starchypotatocode":[{"date":"2024-09-23","commitResults":[{"hash":"b47310fccafd5f50ba98c58dfa4065ca13356d63","isMergeCommit":false,"messageTitle":"Rename packages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":81,"deletions":81},"other":{"insertions":32,"deletions":32},"test-code":{"insertions":59,"deletions":59}}}]},{"date":"2024-09-24","commitResults":[{"hash":"301e145882f4f5f4a889904a6c47182e531a78bd","isMergeCommit":false,"messageTitle":"Rename classes to fit package","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":395,"deletions":395},"other":{"insertions":177,"deletions":177},"docs":{"insertions":80,"deletions":80},"test-code":{"insertions":548,"deletions":548}}},{"hash":"4a975bd01ecc9ce44d9f1b07c29584e7ee62eb32","isMergeCommit":false,"messageTitle":"Fix comments and variables","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":35},"other":{"insertions":4,"deletions":0},"test-code":{"insertions":82,"deletions":82}}},{"hash":"1d11525fdc0e346458300116f0b2bc7063396998","isMergeCommit":false,"messageTitle":"Update website links","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"e6a60e54d1afa0e90d599c7d311ebbe333c049b9","isMergeCommit":true,"messageTitle":"Merge pull request #5 from starchypotatocode/branch-v1.0","messageBody":"v1.0","fileTypesAndContributionMap":{}},{"hash":"ed7ed041a6cfe87c73b80ef0b750f90219b83139","isMergeCommit":false,"messageTitle":"Change AboutUs names","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-09-27","commitResults":[{"hash":"92fcc94bc9d64d410b237e97e25036956f4028af","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-W14-3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"60d3f58b49e884a8972377667a2bd77eb1f34890","isMergeCommit":true,"messageTitle":"Merge pull request #10 from yuvrajaryan/addphoto","messageBody":"Add Aryan\u0027s Photo","fileTypesAndContributionMap":{}}]},{"date":"2024-09-29","commitResults":[{"hash":"2f98f232223f185b293e0f49fb49082891385bb0","isMergeCommit":true,"messageTitle":"Merge pull request #15 from keithxun/branch-Add-Photo","messageBody":"Add a photo of Keith","fileTypesAndContributionMap":{}},{"hash":"3e36f60ee4a3dc6031d14ee8c74bea903759b3f8","isMergeCommit":true,"messageTitle":"Merge pull request #8 from starchypotatocode/branch-Add-Photo","messageBody":"Add Daniel\u0027s Photo","fileTypesAndContributionMap":{}}]},{"date":"2024-09-30","commitResults":[{"hash":"0e9273599eb74368cc45ad3fa8857f6d666c5a27","isMergeCommit":true,"messageTitle":"Merge pull request #17 from taggyhan/branch-Add-Photo","messageBody":"Add Tag Han\u0027s Pic","tags":["v1.0.1"],"fileTypesAndContributionMap":{}},{"hash":"9fd08a6a669af92c3db84bf3b31a58d5cdbaabe1","isMergeCommit":false,"messageTitle":"Add details to AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"8c9095fb924f07ed6efb3718392b574fa280c6ac","isMergeCommit":false,"messageTitle":"Add portfolio to AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"831120388f1c3ee3e34511a3a142d9168da0a7db","isMergeCommit":true,"messageTitle":"Merge pull request #20 from keithxun/branch-Aboutus","messageBody":"Update Keith details in AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"44ee4f79414e2404625701c7ab2925d22feb2974","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e3abfdb899c67e1425a38a107b7818caef67d990","isMergeCommit":true,"messageTitle":"Merge pull request #24 from yuvrajaryan/task4.1","messageBody":"Modify AboutUs.md file","fileTypesAndContributionMap":{}},{"hash":"c0a78f10c0134cd458cbaa7acd6179df4423d438","isMergeCommit":true,"messageTitle":"Merge pull request #35 from taggyhan/branch-update-about-me","messageBody":"Update Tag\u0027s details in AboutUs.md ","fileTypesAndContributionMap":{}},{"hash":"647c87494fd71e8668c640f5f91e40df31ab6b3c","isMergeCommit":false,"messageTitle":"Update badge links and add credits","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":3}}},{"hash":"9888dad6eb0265bb5996d491de53e082b439fb02","isMergeCommit":true,"messageTitle":"Merge pull request #37 from keithxun/branch-UserStories","messageBody":"Branch user stories","fileTypesAndContributionMap":{}},{"hash":"7405f64e17421382912d82a1ec4d95fddb9f87f1","isMergeCommit":false,"messageTitle":"Fix formatting errors and change .jar name","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1},"docs":{"insertions":23,"deletions":15}}},{"hash":"4dbbedb6d5826e48962475b4b46c145a749565d4","isMergeCommit":false,"messageTitle":"Delete dead files","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":8}}}]},{"date":"2024-10-01","commitResults":[{"hash":"dc738ebc0372719684a0543b2876ff7692539dca","isMergeCommit":false,"messageTitle":"Fix website GitHub link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"62a5a1fb148f6749ff7f0f5e1295f8e4fb9367fe","isMergeCommit":true,"messageTitle":"Merge pull request #43 from starchypotatocode/branch-Fix-Website-Link","messageBody":"Fix website GitHub link","fileTypesAndContributionMap":{}},{"hash":"c1921041ef3060e5b31b4b05717b9ca4d4d08138","isMergeCommit":true,"messageTitle":"Merge pull request #44 from QinHaichen12/branch-UIMockup","messageBody":"Week 7 Task 2 - A1","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"8e0824f49b5080ed9c8dc7b24289ea5142f1cf6a","isMergeCommit":true,"messageTitle":"Merge pull request #45 from QinHaichen12/branch-UseCase","messageBody":"Week 7 Task 3 - Create Use Cases","fileTypesAndContributionMap":{}},{"hash":"c69ce5a23aa0fb74651cabe0569ddb19b85abcfb","isMergeCommit":true,"messageTitle":"Merge pull request #42 from taggyhan/branch-index","messageBody":"Week 7 Task 2 - A4","fileTypesAndContributionMap":{}},{"hash":"7d83beeedbd2228b0a100a1a22b0017533469e92","isMergeCommit":false,"messageTitle":"Fix CI Status Link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"5c0a5b94707b121a4846aee7c5f67362eae1fc1c","isMergeCommit":true,"messageTitle":"Merge pull request #46 from starchypotatocode/branch-Update-Sources","messageBody":"Fix CI Status Link","fileTypesAndContributionMap":{}},{"hash":"25e98925ac95993895eceb6a2f4f0d9ef961324a","isMergeCommit":false,"messageTitle":"Change README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":10}}}]},{"date":"2024-10-08","commitResults":[{"hash":"3a6e8f653c37aad2d1ba28348feea7a1bcd6c1f4","isMergeCommit":false,"messageTitle":"Rename Address.java and comments to Room.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":55},"other":{"insertions":10,"deletions":10},"docs":{"insertions":3,"deletions":3},"test-code":{"insertions":124,"deletions":124}}},{"hash":"adc4891f4ecc0c1f0aca665c9267f5ba5955abd9","isMergeCommit":false,"messageTitle":"Rename variables","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"6e41dd0ce1f50f8cd0d4a4f0ffd092ec39f5c4de","isMergeCommit":false,"messageTitle":"Delete Email.java field from Member.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":181},"docs":{"insertions":8,"deletions":12},"test-code":{"insertions":111,"deletions":328}}},{"hash":"2c6b908545f71236a5b720a8ea81332f564de7a3","isMergeCommit":false,"messageTitle":"Update Room validity criteria and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":22},"docs":{"insertions":7,"deletions":7},"test-code":{"insertions":57,"deletions":31}}},{"hash":"d39d472b9a59c8be1712fc0499f084aca5d8dc08","isMergeCommit":false,"messageTitle":"Change Phone to TelegramHandle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":72},"other":{"insertions":14,"deletions":14},"docs":{"insertions":8,"deletions":8},"test-code":{"insertions":214,"deletions":207}}}]},{"date":"2024-10-09","commitResults":[{"hash":"079847b0d7722c169888e6613d5cb03f3e55a909","isMergeCommit":false,"messageTitle":"Fix terminology error in class name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":138,"deletions":136},"docs":{"insertions":10,"deletions":10},"test-code":{"insertions":209,"deletions":209}}},{"hash":"c98083200e8492ae47e34e7e44e0a3e652b1201a","isMergeCommit":false,"messageTitle":"Change regex validation for Telegram","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":22},"docs":{"insertions":8,"deletions":8},"test-code":{"insertions":61,"deletions":30}}},{"hash":"5541c33aa86180a40af272b30c96393c1d39baa2","isMergeCommit":false,"messageTitle":"Improve tokenizer whitespace processing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":3},"test-code":{"insertions":10,"deletions":0}}}]},{"date":"2024-10-11","commitResults":[{"hash":"a9a62678e8d934e5daa0ff9461cd95b8d5347ab0","isMergeCommit":false,"messageTitle":"Rename Command classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":15},"other":{"insertions":185,"deletions":177},"test-code":{"insertions":30,"deletions":30}}}]}],"keithxun":[{"date":"2024-09-30","commitResults":[{"hash":"999b31999d9ded164855192e9492a6339cdf04ba","isMergeCommit":false,"messageTitle":"Update Keith details in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":12}}},{"hash":"6fe8bba7c005f5eeda5e26bcffd3bf8c29c1d922","isMergeCommit":false,"messageTitle":"Update responsibilities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"71b1cdb42d0c6cda3332059913066121ca480653","isMergeCommit":false,"messageTitle":"Update portfolio page for Keith","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":61,"deletions":1}}},{"hash":"200edf6a4ff983bc8d7d1b2084d2ec191965d687","isMergeCommit":true,"messageTitle":"Merge pull request #21 from starchypotatocode/branch-Update-About-Us","messageBody":"Update Daniel details in AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"af7e3d6470bb153eaf1c13f93a6c3b796563d7d1","isMergeCommit":false,"messageTitle":"Initial transfer of user stories to the repository","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":99,"deletions":74}}},{"hash":"7bb6e5c5ad341fa1a27011aa206727e3597b930a","isMergeCommit":false,"messageTitle":"Organise by user types","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":61,"deletions":35}}},{"hash":"f88a83c8b50b1c0634014340e56b88ca1ac8f652","isMergeCommit":false,"messageTitle":"Organise by priority","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":61}}},{"hash":"111fb6c2620bf2e46f36ff12ef3fc5d62d51e71b","isMergeCommit":false,"messageTitle":"Remove irrelevant user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":35}}},{"hash":"795933aea6b3b5354f628fff6d9df4a662fc055b","isMergeCommit":false,"messageTitle":"Made initial changes to non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":12}}}]},{"date":"2024-10-01","commitResults":[{"hash":"d62594d92924d3a123ce621cc73462ca714db39a","isMergeCommit":false,"messageTitle":"Made minor change to non-functional requirement section","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}}]},{"date":"2024-10-02","commitResults":[{"hash":"1708f20cc8c271badb65a0c5ef250c1e1bb01778","isMergeCommit":true,"messageTitle":"Merge pull request #47 from starchypotatocode/branch-Update-Sources","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"30463c198af77f2305303ecd227e84d8cac4612e","isMergeCommit":false,"messageTitle":"Add SessionName and Session classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":0},"other":{"insertions":574,"deletions":0}}},{"hash":"ef4c6b30f0d2cb56524067c8b2f87c7220ba367b","isMergeCommit":false,"messageTitle":"Remove all files from bin","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":574}}},{"hash":"eeceb7ceef30bf76307f09e7032494c89a27bb7a","isMergeCommit":false,"messageTitle":"Dummy point class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"97fd294a177ce003c89697451ba98e3e277988b7","isMergeCommit":false,"messageTitle":"Update session class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":103,"deletions":1}}},{"hash":"5bedb0fc0e1e72bbfbe2cf41fc0e294080c7e9d7","isMergeCommit":false,"messageTitle":"Remove session class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":6}}},{"hash":"4a4b3453a2265067a9b84432b1d1cd50d6714098","isMergeCommit":false,"messageTitle":"Fix style errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"a784bbba59e112be470e1abd9883d0f921a0d4e4","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":13}}}]},{"date":"2024-10-10","commitResults":[{"hash":"48de6d62e088f1bc6e744267e48402f3a8390916","isMergeCommit":false,"messageTitle":"Add date class for session","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":82,"deletions":0}}},{"hash":"8b077c2ed71ccd72b28980a58040e3e0c4b532c6","isMergeCommit":false,"messageTitle":"Fix styles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"yuvrajaryan":{"docs":6,"functional-code":0,"test-code":0},"taggyhan":{"docs":166,"functional-code":0,"test-code":0},"QinHaichen12":{"docs":211,"functional-code":0,"test-code":0},"starchypotatocode":{"docs":115,"functional-code":785,"test-code":1209,"other":3},"keithxun":{"docs":162,"functional-code":257,"test-code":0}},"authorContributionVariance":{"yuvrajaryan":478.3576,"taggyhan":754.60547,"QinHaichen12":3114.175,"starchypotatocode":447616.28,"keithxun":91148.31},"authorDisplayNameMap":{"yuvrajaryan":"CS2103T-W14-3 YUVR..INGH","taggyhan":"CS2103T-W14-3 TAN .. HAN","QinHaichen12":"CS2103T-W14-3 QIN ..CHEN","starchypotatocode":"CS2103T-W14-3 LAI ..NIEL","keithxun":"CS2103T-W14-3 ONG ..EITH"}} +{"authorDailyContributionsMap":{"yuvrajaryan":[{"date":"2024-09-30","commitResults":[{"hash":"e05eaa37e6dcde26cf217648ecec7d95f05fd900","isMergeCommit":false,"messageTitle":"Modifies AboutUs.md file","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":50,"deletions":43}}},{"hash":"19ae4355aa190a237a1952fac38ae9de9811531b","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into task4.1","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"8871260e48537451163835075c788b2645c547e9","isMergeCommit":false,"messageTitle":"Update Target User Profile and Value Proposition","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":6,"deletions":6}}},{"hash":"c19e396b3b0c27797b6679cea2312e6dda5ee9f1","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 into targetuserprofile","messageBody":"","fileTypesAndContributionMap":{}}]}],"taggyhan":[{"date":"2024-09-30","commitResults":[{"hash":"69a11b3e92fd097ea248fd90d6adef0b2ac5e16a","isMergeCommit":false,"messageTitle":"Add Tag\u0027s Details","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":1}}},{"hash":"5b0acf96dfc73b41e64cb9cdf4906bd5631fc77b","isMergeCommit":true,"messageTitle":"Merge branch \u0027pr-haichen\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"cb554550cc3c1c9ba9f1534ad84e911946649a89","isMergeCommit":true,"messageTitle":"Merge pull request #22 from QinHaichen12/branch-AboutUs","messageBody":"Update Haichen\u0027s details in AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"8296e8cc27af588c64fe7b24f2a37fc7981097cf","isMergeCommit":true,"messageTitle":"Update Aboutme","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"17e2bf5a7ef8ef712a0490cf25475e0810ccdda3","isMergeCommit":false,"messageTitle":"Fix Error in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":10,"deletions":57}}},{"hash":"a96aa341d9b5c61447aa7e2fe8d9743d10a01bdd","isMergeCommit":false,"messageTitle":"Fix Error in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"e2a96c0fd778305b901178aff373f7e967785f83","isMergeCommit":true,"messageTitle":"Merge pull request #39 from starchypotatocode/branch-Update-Website","messageBody":"Week 7 Task 2 - B","fileTypesAndContributionMap":{}},{"hash":"7de788513c8dfd493a4fed00d1438415d24e3956","isMergeCommit":true,"messageTitle":"Merge pull request #36 from starchypotatocode/branch-Update-Sources","messageBody":"Week 7 Task 2 - A2 \u0026 A3","fileTypesAndContributionMap":{}},{"hash":"c5e95bcb747d12db89b730dd04e79bc36a26638d","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"fac2b25383da897a4d1014ac07e12b537eb458b6","isMergeCommit":true,"messageTitle":"Merge pull request #38 from yuvrajaryan/targetuserprofile","messageBody":"Update Target User Profile and Value Proposition","fileTypesAndContributionMap":{}},{"hash":"d87e94d1e26e4646af0fb225c350fe2067171ff2","isMergeCommit":true,"messageTitle":"Merge remote-tracking branch \u0027upstream/master\u0027","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"a915bf2a017665d0714f146892576edd9c4dd13b","isMergeCommit":false,"messageTitle":"Update Glossary","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":74,"deletions":3}}},{"hash":"84eddd0ecede83ef919dca45321faf6b0e1ebd1b","isMergeCommit":false,"messageTitle":"Update Index.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":25,"deletions":6}}},{"hash":"7b6eaf6d333303a9074dcd48975c795a17437997","isMergeCommit":true,"messageTitle":"Merge pull request #40 from keithxun/branch-NFR","messageBody":"Branch nfr","fileTypesAndContributionMap":{}}]},{"date":"2024-10-11","commitResults":[{"hash":"8ba74263f5736f26e27f7f647f915302ab8d9fb6","isMergeCommit":true,"messageTitle":"Merge pull request #59 from starchypotatocode/branch-RenameClasses","messageBody":"Rename Command classes","fileTypesAndContributionMap":{}},{"hash":"acceceabe24ae858655a6a1d459aa6d1e7b77c1a","isMergeCommit":false,"messageTitle":"Fix Error in CliSyntax","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":45,"deletions":21},"docs":{"insertions":1,"deletions":19}}}]},{"date":"2024-10-12","commitResults":[{"hash":"e06150cd4b50c7e5cedb988f471de6cf3333581f","isMergeCommit":false,"messageTitle":"Refactor all commands to match feature spec and intrdouce new room number handling","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":48,"deletions":39},"other":{"insertions":78,"deletions":67},"test-code":{"insertions":4,"deletions":4}}},{"hash":"4d7dfab87806ab0efd6d251a10fdcaa4982d7d17","isMergeCommit":false,"messageTitle":"Fix Bug in Git","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0},"test-code":{"insertions":1,"deletions":1}}},{"hash":"d00234ad00c66a9f6e785d5536eb103a2e097f72","isMergeCommit":false,"messageTitle":"Set executable permission for run-checks.sh","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"d6b859a13da2bc6f40291a1e9554b7eb79cc1f01","isMergeCommit":false,"messageTitle":"Set executable permission for all check scripts","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":0}}},{"hash":"db9a7a27c0445274d14c8753dbc5d3a08058ed71","isMergeCommit":false,"messageTitle":"Fix Bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":1},"other":{"insertions":81,"deletions":81},"docs":{"insertions":1,"deletions":1},"test-code":{"insertions":101,"deletions":98}}},{"hash":"3775f751a6b5d0d55e21ececb933817b6bf1e07b","isMergeCommit":false,"messageTitle":"Fix Bug","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":2,"deletions":8}}},{"hash":"ae6b6531f7b211cfde759fa9ebba068cc3a1e1eb","isMergeCommit":false,"messageTitle":"Fix Test Cases","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":7,"deletions":7},"test-code":{"insertions":64,"deletions":46}}},{"hash":"de6ecc93dcbbbae334ee11736e809b0f3f761575","isMergeCommit":false,"messageTitle":"Fix typo in LogicSequenceDiagram","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}}]}],"QinHaichen12":[{"date":"2024-09-28","commitResults":[{"hash":"cf641cf7dabbbaf4a44f5b0448a1c512fab3f581","isMergeCommit":true,"messageTitle":"Merge pull request #14 from QinHaichen12/branch-Add-Photo","messageBody":"add photo","fileTypesAndContributionMap":{}}]},{"date":"2024-09-30","commitResults":[{"hash":"7082fd1c4629fe70e2f822822a634424afa00d01","isMergeCommit":false,"messageTitle":"add about us","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":42}}},{"hash":"a879979e50b2115ec7f58a8569e59100a4589440","isMergeCommit":false,"messageTitle":"add personal md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":0}}},{"hash":"6d9bd1e939fb30fdf8bd1a135b6c7c0c0d0ffebd","isMergeCommit":true,"messageTitle":"merge master","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"010a8acf2c457b42ef9170a9a3690049ae3e904f","isMergeCommit":true,"messageTitle":"merge master","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-01","commitResults":[{"hash":"65cf8617cc169ed01053e0cf0e5b415242dc057a","isMergeCommit":false,"messageTitle":"add use cases","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":232,"deletions":34}}},{"hash":"af204fb05cae9cd5183cd5479a0b8db940398966","isMergeCommit":true,"messageTitle":"Merge pull request #41 from taggyhan/branch-glossary","messageBody":"Week 7 Task 3 - Compile Glossary","fileTypesAndContributionMap":{}}]},{"date":"2024-10-10","commitResults":[{"hash":"be8517c1d3f500bb1d8f897041d8d03b96e43f24","isMergeCommit":true,"messageTitle":"Merge pull request #54 from keithxun/branch-Add-Session","messageBody":"Branch add session","fileTypesAndContributionMap":{}},{"hash":"ea327312a56574b26b77cc0b92b36a03471a6aac","isMergeCommit":true,"messageTitle":"Merge pull request #50 from starchypotatocode/branch-EditMemberFields","messageBody":"Change fields of Member and update tests","fileTypesAndContributionMap":{}}]}],"starchypotatocode":[{"date":"2024-09-23","commitResults":[{"hash":"b47310fccafd5f50ba98c58dfa4065ca13356d63","isMergeCommit":false,"messageTitle":"Rename packages","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":81,"deletions":81},"other":{"insertions":32,"deletions":32},"test-code":{"insertions":59,"deletions":59}}}]},{"date":"2024-09-24","commitResults":[{"hash":"301e145882f4f5f4a889904a6c47182e531a78bd","isMergeCommit":false,"messageTitle":"Rename classes to fit package","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":395,"deletions":395},"other":{"insertions":177,"deletions":177},"docs":{"insertions":80,"deletions":80},"test-code":{"insertions":548,"deletions":548}}},{"hash":"4a975bd01ecc9ce44d9f1b07c29584e7ee62eb32","isMergeCommit":false,"messageTitle":"Fix comments and variables","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":53,"deletions":35},"other":{"insertions":4,"deletions":0},"test-code":{"insertions":82,"deletions":82}}},{"hash":"1d11525fdc0e346458300116f0b2bc7063396998","isMergeCommit":false,"messageTitle":"Update website links","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":11,"deletions":11}}},{"hash":"e6a60e54d1afa0e90d599c7d311ebbe333c049b9","isMergeCommit":true,"messageTitle":"Merge pull request #5 from starchypotatocode/branch-v1.0","messageBody":"v1.0","fileTypesAndContributionMap":{}},{"hash":"ed7ed041a6cfe87c73b80ef0b750f90219b83139","isMergeCommit":false,"messageTitle":"Change AboutUs names","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":4}}}]},{"date":"2024-09-27","commitResults":[{"hash":"92fcc94bc9d64d410b237e97e25036956f4028af","isMergeCommit":true,"messageTitle":"Merge branch \u0027master\u0027 of https://github.com/AY2425S1-CS2103T-W14-3/tp","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"60d3f58b49e884a8972377667a2bd77eb1f34890","isMergeCommit":true,"messageTitle":"Merge pull request #10 from yuvrajaryan/addphoto","messageBody":"Add Aryan\u0027s Photo","fileTypesAndContributionMap":{}}]},{"date":"2024-09-29","commitResults":[{"hash":"2f98f232223f185b293e0f49fb49082891385bb0","isMergeCommit":true,"messageTitle":"Merge pull request #15 from keithxun/branch-Add-Photo","messageBody":"Add a photo of Keith","fileTypesAndContributionMap":{}},{"hash":"3e36f60ee4a3dc6031d14ee8c74bea903759b3f8","isMergeCommit":true,"messageTitle":"Merge pull request #8 from starchypotatocode/branch-Add-Photo","messageBody":"Add Daniel\u0027s Photo","fileTypesAndContributionMap":{}}]},{"date":"2024-09-30","commitResults":[{"hash":"0e9273599eb74368cc45ad3fa8857f6d666c5a27","isMergeCommit":true,"messageTitle":"Merge pull request #17 from taggyhan/branch-Add-Photo","messageBody":"Add Tag Han\u0027s Pic","tags":["v1.0.1"],"fileTypesAndContributionMap":{}},{"hash":"9fd08a6a669af92c3db84bf3b31a58d5cdbaabe1","isMergeCommit":false,"messageTitle":"Add details to AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":5,"deletions":6}}},{"hash":"8c9095fb924f07ed6efb3718392b574fa280c6ac","isMergeCommit":false,"messageTitle":"Add portfolio to AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":0}}},{"hash":"831120388f1c3ee3e34511a3a142d9168da0a7db","isMergeCommit":true,"messageTitle":"Merge pull request #20 from keithxun/branch-Aboutus","messageBody":"Update Keith details in AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"44ee4f79414e2404625701c7ab2925d22feb2974","isMergeCommit":true,"messageTitle":"Fix merge conflicts","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"e3abfdb899c67e1425a38a107b7818caef67d990","isMergeCommit":true,"messageTitle":"Merge pull request #24 from yuvrajaryan/task4.1","messageBody":"Modify AboutUs.md file","fileTypesAndContributionMap":{}},{"hash":"c0a78f10c0134cd458cbaa7acd6179df4423d438","isMergeCommit":true,"messageTitle":"Merge pull request #35 from taggyhan/branch-update-about-me","messageBody":"Update Tag\u0027s details in AboutUs.md ","fileTypesAndContributionMap":{}},{"hash":"647c87494fd71e8668c640f5f91e40df31ab6b3c","isMergeCommit":false,"messageTitle":"Update badge links and add credits","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":7,"deletions":3}}},{"hash":"9888dad6eb0265bb5996d491de53e082b439fb02","isMergeCommit":true,"messageTitle":"Merge pull request #37 from keithxun/branch-UserStories","messageBody":"Branch user stories","fileTypesAndContributionMap":{}},{"hash":"7405f64e17421382912d82a1ec4d95fddb9f87f1","isMergeCommit":false,"messageTitle":"Fix formatting errors and change .jar name","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":1,"deletions":1},"docs":{"insertions":23,"deletions":15}}},{"hash":"4dbbedb6d5826e48962475b4b46c145a749565d4","isMergeCommit":false,"messageTitle":"Delete dead files","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":0,"deletions":8}}}]},{"date":"2024-10-01","commitResults":[{"hash":"dc738ebc0372719684a0543b2876ff7692539dca","isMergeCommit":false,"messageTitle":"Fix website GitHub link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"62a5a1fb148f6749ff7f0f5e1295f8e4fb9367fe","isMergeCommit":true,"messageTitle":"Merge pull request #43 from starchypotatocode/branch-Fix-Website-Link","messageBody":"Fix website GitHub link","fileTypesAndContributionMap":{}},{"hash":"c1921041ef3060e5b31b4b05717b9ca4d4d08138","isMergeCommit":true,"messageTitle":"Merge pull request #44 from QinHaichen12/branch-UIMockup","messageBody":"Week 7 Task 2 - A1","fileTypesAndContributionMap":{}}]},{"date":"2024-10-02","commitResults":[{"hash":"8e0824f49b5080ed9c8dc7b24289ea5142f1cf6a","isMergeCommit":true,"messageTitle":"Merge pull request #45 from QinHaichen12/branch-UseCase","messageBody":"Week 7 Task 3 - Create Use Cases","fileTypesAndContributionMap":{}},{"hash":"c69ce5a23aa0fb74651cabe0569ddb19b85abcfb","isMergeCommit":true,"messageTitle":"Merge pull request #42 from taggyhan/branch-index","messageBody":"Week 7 Task 2 - A4","fileTypesAndContributionMap":{}},{"hash":"7d83beeedbd2228b0a100a1a22b0017533469e92","isMergeCommit":false,"messageTitle":"Fix CI Status Link","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":2,"deletions":2}}},{"hash":"5c0a5b94707b121a4846aee7c5f67362eae1fc1c","isMergeCommit":true,"messageTitle":"Merge pull request #46 from starchypotatocode/branch-Update-Sources","messageBody":"Fix CI Status Link","fileTypesAndContributionMap":{}},{"hash":"25e98925ac95993895eceb6a2f4f0d9ef961324a","isMergeCommit":false,"messageTitle":"Change README.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":10}}}]},{"date":"2024-10-08","commitResults":[{"hash":"3a6e8f653c37aad2d1ba28348feea7a1bcd6c1f4","isMergeCommit":false,"messageTitle":"Rename Address.java and comments to Room.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":55,"deletions":55},"other":{"insertions":10,"deletions":10},"docs":{"insertions":3,"deletions":3},"test-code":{"insertions":124,"deletions":124}}},{"hash":"adc4891f4ecc0c1f0aca665c9267f5ba5955abd9","isMergeCommit":false,"messageTitle":"Rename variables","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":3,"deletions":3}}},{"hash":"6e41dd0ce1f50f8cd0d4a4f0ffd092ec39f5c4de","isMergeCommit":false,"messageTitle":"Delete Email.java field from Member.java","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":31,"deletions":181},"docs":{"insertions":8,"deletions":12},"test-code":{"insertions":111,"deletions":328}}},{"hash":"2c6b908545f71236a5b720a8ea81332f564de7a3","isMergeCommit":false,"messageTitle":"Update Room validity criteria and tests","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":22,"deletions":22},"docs":{"insertions":7,"deletions":7},"test-code":{"insertions":57,"deletions":31}}},{"hash":"d39d472b9a59c8be1712fc0499f084aca5d8dc08","isMergeCommit":false,"messageTitle":"Change Phone to TelegramHandle","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":76,"deletions":72},"other":{"insertions":14,"deletions":14},"docs":{"insertions":8,"deletions":8},"test-code":{"insertions":214,"deletions":207}}}]},{"date":"2024-10-09","commitResults":[{"hash":"079847b0d7722c169888e6613d5cb03f3e55a909","isMergeCommit":false,"messageTitle":"Fix terminology error in class name","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":138,"deletions":136},"docs":{"insertions":10,"deletions":10},"test-code":{"insertions":209,"deletions":209}}},{"hash":"c98083200e8492ae47e34e7e44e0a3e652b1201a","isMergeCommit":false,"messageTitle":"Change regex validation for Telegram","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":24,"deletions":22},"docs":{"insertions":8,"deletions":8},"test-code":{"insertions":61,"deletions":30}}},{"hash":"5541c33aa86180a40af272b30c96393c1d39baa2","isMergeCommit":false,"messageTitle":"Improve tokenizer whitespace processing","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":3},"test-code":{"insertions":10,"deletions":0}}}]},{"date":"2024-10-11","commitResults":[{"hash":"a9a62678e8d934e5daa0ff9461cd95b8d5347ab0","isMergeCommit":false,"messageTitle":"Rename Command classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":15,"deletions":15},"other":{"insertions":185,"deletions":177},"test-code":{"insertions":30,"deletions":30}}}]},{"date":"2024-10-12","commitResults":[{"hash":"746198c5c922e03754c6ae2b5bed8a4c6a4d1f4c","isMergeCommit":true,"messageTitle":"Merge pull request #62 from taggyhan/branch-update-commands","messageBody":"Refactor all commands to match feature spec ","fileTypesAndContributionMap":{}}]}],"keithxun":[{"date":"2024-09-30","commitResults":[{"hash":"999b31999d9ded164855192e9492a6339cdf04ba","isMergeCommit":false,"messageTitle":"Update Keith details in AboutUs.md","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":12,"deletions":12}}},{"hash":"6fe8bba7c005f5eeda5e26bcffd3bf8c29c1d922","isMergeCommit":false,"messageTitle":"Update responsibilities","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":1,"deletions":1}}},{"hash":"71b1cdb42d0c6cda3332059913066121ca480653","isMergeCommit":false,"messageTitle":"Update portfolio page for Keith","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":61,"deletions":1}}},{"hash":"200edf6a4ff983bc8d7d1b2084d2ec191965d687","isMergeCommit":true,"messageTitle":"Merge pull request #21 from starchypotatocode/branch-Update-About-Us","messageBody":"Update Daniel details in AboutUs.md","fileTypesAndContributionMap":{}},{"hash":"af7e3d6470bb153eaf1c13f93a6c3b796563d7d1","isMergeCommit":false,"messageTitle":"Initial transfer of user stories to the repository","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":99,"deletions":74}}},{"hash":"7bb6e5c5ad341fa1a27011aa206727e3597b930a","isMergeCommit":false,"messageTitle":"Organise by user types","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":61,"deletions":35}}},{"hash":"f88a83c8b50b1c0634014340e56b88ca1ac8f652","isMergeCommit":false,"messageTitle":"Organise by priority","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":35,"deletions":61}}},{"hash":"111fb6c2620bf2e46f36ff12ef3fc5d62d51e71b","isMergeCommit":false,"messageTitle":"Remove irrelevant user stories","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":26,"deletions":35}}},{"hash":"795933aea6b3b5354f628fff6d9df4a662fc055b","isMergeCommit":false,"messageTitle":"Made initial changes to non-functional requirements","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":16,"deletions":12}}}]},{"date":"2024-10-01","commitResults":[{"hash":"d62594d92924d3a123ce621cc73462ca714db39a","isMergeCommit":false,"messageTitle":"Made minor change to non-functional requirement section","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":4,"deletions":5}}}]},{"date":"2024-10-02","commitResults":[{"hash":"1708f20cc8c271badb65a0c5ef250c1e1bb01778","isMergeCommit":true,"messageTitle":"Merge pull request #47 from starchypotatocode/branch-Update-Sources","messageBody":"","fileTypesAndContributionMap":{}}]},{"date":"2024-10-09","commitResults":[{"hash":"30463c198af77f2305303ecd227e84d8cac4612e","isMergeCommit":false,"messageTitle":"Add SessionName and Session classes","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":71,"deletions":0},"other":{"insertions":574,"deletions":0}}},{"hash":"ef4c6b30f0d2cb56524067c8b2f87c7220ba367b","isMergeCommit":false,"messageTitle":"Remove all files from bin","messageBody":"","fileTypesAndContributionMap":{"other":{"insertions":0,"deletions":574}}},{"hash":"eeceb7ceef30bf76307f09e7032494c89a27bb7a","isMergeCommit":false,"messageTitle":"Dummy point class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":0}}},{"hash":"97fd294a177ce003c89697451ba98e3e277988b7","isMergeCommit":false,"messageTitle":"Update session class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":103,"deletions":1}}},{"hash":"5bedb0fc0e1e72bbfbe2cf41fc0e294080c7e9d7","isMergeCommit":false,"messageTitle":"Remove session class","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":0,"deletions":6}}},{"hash":"4a4b3453a2265067a9b84432b1d1cd50d6714098","isMergeCommit":false,"messageTitle":"Fix style errors","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":1,"deletions":1}}},{"hash":"a784bbba59e112be470e1abd9883d0f921a0d4e4","isMergeCommit":false,"messageTitle":"Fix style","messageBody":"","fileTypesAndContributionMap":{"docs":{"insertions":24,"deletions":13}}}]},{"date":"2024-10-10","commitResults":[{"hash":"48de6d62e088f1bc6e744267e48402f3a8390916","isMergeCommit":false,"messageTitle":"Add date class for session","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":82,"deletions":0}}},{"hash":"8b077c2ed71ccd72b28980a58040e3e0c4b532c6","isMergeCommit":false,"messageTitle":"Fix styles","messageBody":"","fileTypesAndContributionMap":{"functional-code":{"insertions":6,"deletions":4}}}]}]},"authorFileTypeContributionMap":{"yuvrajaryan":{"docs":6,"functional-code":0,"test-code":0},"taggyhan":{"docs":149,"functional-code":142,"test-code":214},"QinHaichen12":{"docs":211,"functional-code":0,"test-code":0},"starchypotatocode":{"docs":114,"functional-code":700,"test-code":1024,"other":3},"keithxun":{"docs":162,"functional-code":257,"test-code":0}},"authorContributionVariance":{"yuvrajaryan":458.5064,"taggyhan":23096.342,"QinHaichen12":2987.1938,"starchypotatocode":431535.97,"keithxun":87534.9},"authorDisplayNameMap":{"yuvrajaryan":"CS2103T-W14-3 YUVR..INGH","taggyhan":"CS2103T-W14-3 TAN .. HAN","QinHaichen12":"CS2103T-W14-3 QIN ..CHEN","starchypotatocode":"CS2103T-W14-3 LAI ..NIEL","keithxun":"CS2103T-W14-3 ONG ..EITH"}} diff --git a/archive.zip b/archive.zip index 66456629..b348756c 100644 Binary files a/archive.zip and b/archive.zip differ diff --git a/reposense-logs/reposense.log.0 b/reposense-logs/reposense.log.0 index b501fcff..03511fbe 100644 --- a/reposense-logs/reposense.log.0 +++ b/reposense-logs/reposense.log.0 @@ -1,55 +1,55 @@ -Oct 12, 2024 1:30:34 PM reposense.system.LogsManager addFileHandler +Oct 13, 2024 1:24:31 AM reposense.system.LogsManager addFileHandler INFO: Log temp folder has been successfully created -Oct 12, 2024 1:30:34 PM reposense.parser.BlurbMarkdownParser parse +Oct 13, 2024 1:24:31 AM reposense.parser.BlurbMarkdownParser parse INFO: Parsing Blurbs... -Oct 12, 2024 1:30:34 PM reposense.parser.BlurbMarkdownParser parse +Oct 13, 2024 1:24:31 AM reposense.parser.BlurbMarkdownParser parse INFO: Blurbs parsed successfully! -Oct 12, 2024 1:30:34 PM reposense.parser.CsvParser validateHeader +Oct 13, 2024 1:24:31 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, repo-config.csv, and recognized columns: Ignore Standalone Config, Repository's Location, Branch, Shallow Cloning, File formats, Ignore Glob List, Ignore Authors List, Find Previous Authors, Ignore Commits List -Oct 12, 2024 1:30:34 PM reposense.parser.CsvParser validateHeader +Oct 13, 2024 1:24:31 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, author-config.csv, and recognized columns: Author's Emails, Repository's Location, Author's GitHub ID, Branch, Author's Display Name, Ignore Glob List, Author's Git Author Name -Oct 12, 2024 1:30:34 PM reposense.parser.CsvParser isLineMalformed +Oct 13, 2024 1:24:31 AM reposense.parser.CsvParser isLineMalformed WARNING: Line 3 in CSV file, author-config.csv, is malformed. Content: https://github.com/AY2425S1-CS2103-F11-2/tp.git,master,,,CS2103-F11-2 LOW .. IAN,, -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias windistone found. The alias will belong to the last author - WinstonJin -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yadobler found. The alias will belong to the last author - yadobler -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyang found. The alias will belong to the last author - mingyang143 -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jovensoh found. The alias will belong to the last author - JovenSoh -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tkaixiang found. The alias will belong to the last author - Tkaixiang -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sleepyday found. The alias will belong to the last author - flyingsalsa -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias travis found. The alias will belong to the last author - travisim -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ziyan found. The alias will belong to the last author - LingZiyann -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ponharish found. The alias will belong to the last author - Ponharish -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias windistone found. The alias will belong to the last author - WinstonJin -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias yadobler found. The alias will belong to the last author - yadobler -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ponharish found. The alias will belong to the last author - Ponharish -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias tkaixiang found. The alias will belong to the last author - Tkaixiang -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias ziyan found. The alias will belong to the last author - LingZiyann -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias travis found. The alias will belong to the last author - travisim -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias jovensoh found. The alias will belong to the last author - JovenSoh -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias mingyang found. The alias will belong to the last author - mingyang143 -Oct 12, 2024 1:30:34 PM reposense.model.AuthorConfiguration checkDuplicateAliases +Oct 13, 2024 1:24:31 AM reposense.model.AuthorConfiguration checkDuplicateAliases WARNING: Duplicate alias sleepyday found. The alias will belong to the last author - flyingsalsa -Oct 12, 2024 1:30:34 PM reposense.parser.CsvParser validateHeader +Oct 13, 2024 1:24:31 AM reposense.parser.CsvParser validateHeader INFO: Parsed header of CSV file, group-config.csv, and recognized columns: Globs, Repository's Location, Group Name -Oct 12, 2024 1:30:34 PM reposense.git.GitConfig getGlobalGitLfsConfig +Oct 13, 2024 1:24:32 AM reposense.git.GitConfig getGlobalGitLfsConfig WARNING: Could not get global git lfs config java.lang.RuntimeException: reposense.system.CommandRunnerProcessException: Error returned from command git config --global --list on path . : fatal: unable to read config file '/home/runner/.gitconfig': No such file or directory @@ -65,2167 +65,2167 @@ fatal: unable to read config file '/home/runner/.gitconfig': No such file or dir at reposense.system.CommandRunner.runCommand(CommandRunner.java:21) ... 3 more -Oct 12, 2024 1:30:34 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-1/tp.git... -Oct 12, 2024 1:30:34 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-4/tp.git... -Oct 12, 2024 1:30:34 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-3/tp.git... -Oct 12, 2024 1:30:34 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:32 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-2/tp.git... -Oct 12, 2024 1:30:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-1/tp.git to complete... -Oct 12, 2024 1:30:34 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:32 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-3/tp.git... +Oct 13, 2024 1:24:32 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T10-4/tp.git... +Oct 13, 2024 1:24:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-4/tp.git to complete... +Oct 13, 2024 1:24:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-2/tp.git to complete... -Oct 12, 2024 1:30:34 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:32 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-3/tp.git to complete... -Oct 12, 2024 1:30:34 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-4/tp.git to complete... -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:32 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T10-1/tp.git to complete... +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-3/tp.git completed! -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F13-2/tp.git... -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F13-2/tp.git to complete... -Oct 12, 2024 1:30:36 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:24:33 AM reposense.report.ReportGenerator analyzeRepos INFO: [1/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-2/tp.git completed! +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-4/tp.git completed! -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-1/tp.git completed! -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F13-1/tp.git... -Oct 12, 2024 1:30:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [2/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [2/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F13-3/tp.git... -Oct 12, 2024 1:30:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [3/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-2/tp.git completed! -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [3/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F13-1/tp.git to complete... -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F13-3/tp.git to complete... -Oct 12, 2024 1:30:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [4/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T10-1/tp.git completed! +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F13-4/tp.git... -Oct 12, 2024 1:30:36 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F13-4/tp.git to complete... -Oct 12, 2024 1:30:36 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:24:33 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:24:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [4/120] Analyzing https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... +Oct 13, 2024 1:24:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... -Oct 12, 2024 1:30:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... -Oct 12, 2024 1:30:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... -Oct 12, 2024 1:30:36 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:24:33 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F13-4/tp.git to complete... +Oct 13, 2024 1:24:33 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:24:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F13-1/tp.git completed! -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14b-1/tp.git... -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... +Oct 13, 2024 1:24:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... +Oct 13, 2024 1:24:34 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F13-2/tp.git completed! -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:34 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14b-1/tp.git... +Oct 13, 2024 1:24:34 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F13-1/tp.git completed! +Oct 13, 2024 1:24:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14b-1/tp.git to complete... -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:35 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14b-2/tp.git... -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14b-2/tp.git to complete... -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F13-4/tp.git completed! -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:35 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14b-3/tp.git... -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:35 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14b-3/tp.git to complete... -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F13-3/tp.git completed! -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:36 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14b-4/tp.git... -Oct 12, 2024 1:30:38 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:36 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14b-4/tp.git to complete... -Oct 12, 2024 1:30:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... -Oct 12, 2024 1:30:39 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-1/tp.git completed! -Oct 12, 2024 1:30:39 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:36 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-2/tp.git completed! +Oct 13, 2024 1:24:36 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W11-4/tp.git... -Oct 12, 2024 1:30:39 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W11-4/tp.git to complete... -Oct 12, 2024 1:30:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-2/tp.git completed! -Oct 12, 2024 1:30:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... -Oct 12, 2024 1:30:40 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-1/tp.git completed! +Oct 13, 2024 1:24:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... +Oct 13, 2024 1:24:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T17-1/tp.git... -Oct 12, 2024 1:30:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... -Oct 12, 2024 1:30:40 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-1/tp.git to complete... -Oct 12, 2024 1:30:40 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-3/tp.git completed! -Oct 12, 2024 1:30:40 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:37 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-1/tp.git to complete... +Oct 13, 2024 1:24:37 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W11-2/tp.git... -Oct 12, 2024 1:30:40 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:37 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W11-2/tp.git to complete... -Oct 12, 2024 1:30:40 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:24:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master)... +Oct 13, 2024 1:24:37 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-1/tp.git (master) completed! -Oct 12, 2024 1:30:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [5/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... -Oct 12, 2024 1:30:40 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... -Oct 12, 2024 1:30:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... -Oct 12, 2024 1:30:40 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master) completed! -Oct 12, 2024 1:30:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [6/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... -Oct 12, 2024 1:30:41 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:24:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [5/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... +Oct 13, 2024 1:24:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... +Oct 13, 2024 1:24:38 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:24:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... -Oct 12, 2024 1:30:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:24:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master)... +Oct 13, 2024 1:24:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... -Oct 12, 2024 1:30:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:24:38 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-3/tp.git (master) completed! +Oct 13, 2024 1:24:38 AM reposense.report.ReportGenerator analyzeRepos +INFO: [6/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... +Oct 13, 2024 1:24:38 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... +Oct 13, 2024 1:24:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-2/tp.git completed! +Oct 13, 2024 1:24:38 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T17-3/tp.git... +Oct 13, 2024 1:24:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master)... -Oct 12, 2024 1:30:41 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:24:38 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-3/tp.git to complete... +Oct 13, 2024 1:24:39 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-2/tp.git (master) completed! -Oct 12, 2024 1:30:41 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:24:39 AM reposense.report.ReportGenerator analyzeRepos INFO: [7/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14b-4/tp.git completed! -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T17-3/tp.git... -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-3/tp.git to complete... -Oct 12, 2024 1:30:42 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-2/tp.git completed! -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T11-1/tp.git... -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T11-1/tp.git to complete... -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-4/tp.git completed! -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... +Oct 13, 2024 1:24:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-1/tp.git completed! -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-4/tp.git completed! +Oct 13, 2024 1:24:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T11-3/tp.git... -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T11-3/tp.git to complete... -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:39 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T08-2/tp.git... -Oct 12, 2024 1:30:42 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:39 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T11-3/tp.git to complete... +Oct 13, 2024 1:24:39 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T08-2/tp.git to complete... -Oct 12, 2024 1:30:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:24:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... -Oct 12, 2024 1:30:43 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:24:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master)... -Oct 12, 2024 1:30:43 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master) completed! -Oct 12, 2024 1:30:43 PM reposense.report.ReportGenerator analyzeRepos -INFO: [8/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... -Oct 12, 2024 1:30:43 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... -Oct 12, 2024 1:30:43 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... -Oct 12, 2024 1:30:43 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-3/tp.git completed! -Oct 12, 2024 1:30:43 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-1/tp.git completed! -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:40 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F09-4/tp.git... -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:40 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T10-4/tp.git (master) completed! +Oct 13, 2024 1:24:40 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-3/tp.git completed! +Oct 13, 2024 1:24:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F09-4/tp.git to complete... -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [8/120] Analyzing https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... +Oct 13, 2024 1:24:40 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F12-3/tp.git... -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:40 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F12-3/tp.git to complete... -Oct 12, 2024 1:30:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:41 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... +Oct 13, 2024 1:24:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-2/tp.git completed! -Oct 12, 2024 1:30:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master) completed! -Oct 12, 2024 1:30:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [9/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T16-3/tp.git... -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-3/tp.git completed! -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T16-3/tp.git to complete... -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:41 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T16-3/tp.git... +Oct 13, 2024 1:24:41 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W10-2/tp.git... -Oct 12, 2024 1:30:44 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... -Oct 12, 2024 1:30:44 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:41 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W10-2/tp.git to complete... -Oct 12, 2024 1:30:45 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:41 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T16-3/tp.git to complete... +Oct 13, 2024 1:24:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... +Oct 13, 2024 1:24:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master)... +Oct 13, 2024 1:24:42 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-2/tp.git (master) completed! +Oct 13, 2024 1:24:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [9/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... +Oct 13, 2024 1:24:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-4/tp.git completed! -Oct 12, 2024 1:30:45 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:42 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W10-4/tp.git... -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:42 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... +Oct 13, 2024 1:24:42 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W10-4/tp.git to complete... -Oct 12, 2024 1:30:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:24:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-3/tp.git completed! -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T16-1/tp.git... -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T16-1/tp.git to complete... -Oct 12, 2024 1:30:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:24:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master)... -Oct 12, 2024 1:30:46 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:24:43 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-4/tp.git (master) completed! -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:43 AM reposense.report.ReportGenerator analyzeRepos +INFO: [10/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... +Oct 13, 2024 1:24:43 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... +Oct 13, 2024 1:24:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-3/tp.git completed! -Oct 12, 2024 1:30:46 PM reposense.report.ReportGenerator analyzeRepos -INFO: [10/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:43 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T16-1/tp.git... +Oct 13, 2024 1:24:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T16-1/tp.git to complete... +Oct 13, 2024 1:24:43 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-3/tp.git completed! +Oct 13, 2024 1:24:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14a-4/tp.git... -Oct 12, 2024 1:30:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14a-4/tp.git to complete... -Oct 12, 2024 1:30:46 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:43 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-2/tp.git completed! -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:43 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W11-1a/tp.git... -Oct 12, 2024 1:30:46 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W11-1a/tp.git to complete... -Oct 12, 2024 1:30:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... -Oct 12, 2024 1:30:47 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master) completed! -Oct 12, 2024 1:30:47 PM reposense.report.ReportGenerator analyzeRepos -INFO: [11/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... -Oct 12, 2024 1:30:47 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... -Oct 12, 2024 1:30:47 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-4/tp.git completed! -Oct 12, 2024 1:30:47 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:44 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W12-1/tp.git... -Oct 12, 2024 1:30:47 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:44 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W12-1/tp.git to complete... -Oct 12, 2024 1:30:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... +Oct 13, 2024 1:24:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master)... +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-4/tp.git completed! +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-1/tp.git completed! -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-1/tp.git (master) completed! +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W12-4/tp.git... -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W12-4/tp.git to complete... -Oct 12, 2024 1:30:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... -Oct 12, 2024 1:30:48 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master) completed! -Oct 12, 2024 1:30:48 PM reposense.report.ReportGenerator analyzeRepos -INFO: [12/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-4/tp.git completed! -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F15-1/tp.git... -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [11/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W12-4/tp.git to complete... +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-1/tp.git to complete... +Oct 13, 2024 1:24:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-1a/tp.git completed! -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F15-4/tp.git... -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-1/tp.git to complete... -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-4/tp.git to complete... -Oct 12, 2024 1:30:48 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-1/tp.git completed! -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-4/tp.git to complete... +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F13-1/tp.git... -Oct 12, 2024 1:30:48 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:45 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F13-1/tp.git to complete... -Oct 12, 2024 1:30:50 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-4/tp.git completed! -Oct 12, 2024 1:30:50 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... +Oct 13, 2024 1:24:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master)... +Oct 13, 2024 1:24:46 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-1/tp.git (master) completed! +Oct 13, 2024 1:24:46 AM reposense.report.ReportGenerator analyzeRepos +INFO: [12/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... +Oct 13, 2024 1:24:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... +Oct 13, 2024 1:24:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F13-1/tp.git completed! +Oct 13, 2024 1:24:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T09-1/tp.git... -Oct 12, 2024 1:30:50 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-1/tp.git to complete... -Oct 12, 2024 1:30:50 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F13-1/tp.git completed! -Oct 12, 2024 1:30:50 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:47 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-4/tp.git completed! +Oct 13, 2024 1:24:47 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F10-1/tp.git... -Oct 12, 2024 1:30:50 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:47 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F10-1/tp.git to complete... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F15-4/tp.git completed! -Oct 12, 2024 1:30:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:48 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F09-1/tp.git... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F10-1/tp.git completed! -Oct 12, 2024 1:30:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:48 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F09-1/tp.git to complete... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F10-1/tp.git completed! +Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T15-1/tp.git... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F15-1/tp.git completed! -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T15-4/tp.git... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T15-1/tp.git to complete... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T15-4/tp.git to complete... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T09-1/tp.git completed! -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T15-4/tp.git... +Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F15-1/tp.git completed! +Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T15-4/tp.git to complete... +Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W08-3/tp.git... -Oct 12, 2024 1:30:52 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:49 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W08-3/tp.git to complete... -Oct 12, 2024 1:30:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... -Oct 12, 2024 1:30:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... -Oct 12, 2024 1:30:52 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master) completed! -Oct 12, 2024 1:30:52 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master) completed! -Oct 12, 2024 1:30:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [13/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... -Oct 12, 2024 1:30:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [14/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... -Oct 12, 2024 1:30:52 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... -Oct 12, 2024 1:30:53 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... -Oct 12, 2024 1:30:53 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T15-4/tp.git completed! -Oct 12, 2024 1:30:53 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... +Oct 13, 2024 1:24:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... +Oct 13, 2024 1:24:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master) completed! +Oct 13, 2024 1:24:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [13/120] Analyzing https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... +Oct 13, 2024 1:24:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-1/tp.git completed! +Oct 13, 2024 1:24:50 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F13-2/tp.git... -Oct 12, 2024 1:30:53 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... +Oct 13, 2024 1:24:50 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F13-2/tp.git to complete... -Oct 12, 2024 1:30:54 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-1/tp.git completed! -Oct 12, 2024 1:30:54 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:50 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T15-4/tp.git completed! +Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W08-4/tp.git... -Oct 12, 2024 1:30:54 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W08-4/tp.git to complete... -Oct 12, 2024 1:30:54 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T15-1/tp.git completed! -Oct 12, 2024 1:30:54 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W08-3/tp.git completed! -Oct 12, 2024 1:30:54 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T12-3/tp.git... -Oct 12, 2024 1:30:54 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T12-4/tp.git... -Oct 12, 2024 1:30:54 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T12-3/tp.git to complete... -Oct 12, 2024 1:30:54 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T12-4/tp.git... +Oct 13, 2024 1:24:51 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T12-4/tp.git to complete... -Oct 12, 2024 1:30:55 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... +Oct 13, 2024 1:24:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master)... +Oct 13, 2024 1:24:51 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-3/tp.git (master) completed! +Oct 13, 2024 1:24:51 AM reposense.report.ReportGenerator analyzeRepos +INFO: [14/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... +Oct 13, 2024 1:24:52 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... +Oct 13, 2024 1:24:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F13-2/tp.git completed! -Oct 12, 2024 1:30:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... -Oct 12, 2024 1:30:55 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:52 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W14-4/tp.git... -Oct 12, 2024 1:30:55 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:52 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W14-4/tp.git to complete... -Oct 12, 2024 1:30:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:24:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... -Oct 12, 2024 1:30:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master)... -Oct 12, 2024 1:30:55 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-2/tp.git (master) completed! -Oct 12, 2024 1:30:55 PM reposense.report.ReportGenerator analyzeRepos -INFO: [15/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... -Oct 12, 2024 1:30:56 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... -Oct 12, 2024 1:30:56 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... +Oct 13, 2024 1:24:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-3/tp.git completed! -Oct 12, 2024 1:30:56 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F11-2/tp.git... -Oct 12, 2024 1:30:56 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F11-2/tp.git to complete... -Oct 12, 2024 1:30:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master)... -Oct 12, 2024 1:30:56 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:24:53 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F13-3/tp.git (master) completed! -Oct 12, 2024 1:30:56 PM reposense.report.ReportGenerator analyzeRepos -INFO: [16/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... -Oct 12, 2024 1:30:56 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... -Oct 12, 2024 1:30:57 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [15/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... +Oct 13, 2024 1:24:53 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F11-2/tp.git to complete... +Oct 13, 2024 1:24:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W08-4/tp.git completed! -Oct 12, 2024 1:30:57 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:53 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F11-2/tp.git... -Oct 12, 2024 1:30:57 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W14-4/tp.git completed! -Oct 12, 2024 1:30:57 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:53 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F11-2/tp.git to complete... -Oct 12, 2024 1:30:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... -Oct 12, 2024 1:30:57 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... +Oct 13, 2024 1:24:54 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W14-4/tp.git completed! +Oct 13, 2024 1:24:54 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T11-2/tp.git... -Oct 12, 2024 1:30:57 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:54 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T11-2/tp.git to complete... -Oct 12, 2024 1:30:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... -Oct 12, 2024 1:30:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master) completed! -Oct 12, 2024 1:30:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [17/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... -Oct 12, 2024 1:30:57 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:24:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... +Oct 13, 2024 1:24:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... +Oct 13, 2024 1:24:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master)... +Oct 13, 2024 1:24:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-4/tp.git (master) completed! +Oct 13, 2024 1:24:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [16/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... +Oct 13, 2024 1:24:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... +Oct 13, 2024 1:24:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:24:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... -Oct 12, 2024 1:30:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master) completed! +Oct 13, 2024 1:24:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [17/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-2/tp.git completed! -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W11-3/tp.git... -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:55 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W11-3/tp.git to complete... -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-4/tp.git completed! -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F11-2/tp.git completed! +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T09-4/tp.git... -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-4/tp.git to complete... -Oct 12, 2024 1:30:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master)... -Oct 12, 2024 1:30:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14b-2/tp.git (master) completed! -Oct 12, 2024 1:30:58 PM reposense.report.ReportGenerator analyzeRepos -INFO: [18/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-2/tp.git completed! -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F11-2/tp.git completed! -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-4/tp.git completed! +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T17-4/tp.git... -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T08-3/tp.git... -Oct 12, 2024 1:30:58 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:30:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-2/tp.git completed! +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-4/tp.git to complete... -Oct 12, 2024 1:30:58 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T08-3/tp.git to complete... -Oct 12, 2024 1:30:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... -Oct 12, 2024 1:30:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:24:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master)... -Oct 12, 2024 1:30:59 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:24:55 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-1/tp.git (master) completed! -Oct 12, 2024 1:30:59 PM reposense.report.ReportGenerator analyzeRepos -INFO: [19/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... -Oct 12, 2024 1:30:59 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:55 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T08-3/tp.git... +Oct 13, 2024 1:24:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [18/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... +Oct 13, 2024 1:24:56 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T08-3/tp.git to complete... +Oct 13, 2024 1:24:56 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... +Oct 13, 2024 1:24:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W11-3/tp.git completed! -Oct 12, 2024 1:30:59 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:56 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T14-3/tp.git... -Oct 12, 2024 1:30:59 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:56 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T14-3/tp.git to complete... -Oct 12, 2024 1:31:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... -Oct 12, 2024 1:31:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-3/tp.git completed! -Oct 12, 2024 1:31:00 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-4/tp.git completed! +Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W10-1/tp.git... -Oct 12, 2024 1:31:00 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W10-1/tp.git to complete... -Oct 12, 2024 1:31:00 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-4/tp.git completed! -Oct 12, 2024 1:31:00 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-3/tp.git completed! +Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W13-2/tp.git... -Oct 12, 2024 1:31:00 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W13-2/tp.git to complete... -Oct 12, 2024 1:31:01 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... +Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T09-4/tp.git completed! -Oct 12, 2024 1:31:01 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:57 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F12-4/tp.git... -Oct 12, 2024 1:31:01 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F12-4/tp.git to complete... -Oct 12, 2024 1:31:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... -Oct 12, 2024 1:31:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-1/tp.git completed! -Oct 12, 2024 1:31:01 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T14-3/tp.git completed! +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W09-1/tp.git... -Oct 12, 2024 1:31:01 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W09-1/tp.git to complete... -Oct 12, 2024 1:31:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:24:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master)... +Oct 13, 2024 1:24:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-4/tp.git (master) completed! +Oct 13, 2024 1:24:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [19/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... +Oct 13, 2024 1:24:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:24:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... +Oct 13, 2024 1:24:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-1/tp.git completed! +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F12-4/tp.git... +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-2/tp.git completed! +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14a-1/tp.git... +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F12-4/tp.git to complete... +Oct 13, 2024 1:24:58 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14a-1/tp.git to complete... +Oct 13, 2024 1:24:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master)... -Oct 12, 2024 1:31:01 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:24:59 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-1/tp.git (master) completed! -Oct 12, 2024 1:31:01 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:24:59 AM reposense.report.ReportGenerator analyzeRepos INFO: [20/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... -Oct 12, 2024 1:31:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-2/tp.git completed! -Oct 12, 2024 1:31:01 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F12-4/tp.git... -Oct 12, 2024 1:31:01 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:24:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... +Oct 13, 2024 1:24:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:24:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... -Oct 12, 2024 1:31:01 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F12-4/tp.git to complete... -Oct 12, 2024 1:31:02 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... +Oct 13, 2024 1:24:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master) completed! +Oct 13, 2024 1:24:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [21/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... +Oct 13, 2024 1:24:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F12-4/tp.git completed! -Oct 12, 2024 1:31:02 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14a-1/tp.git... -Oct 12, 2024 1:31:02 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14a-1/tp.git to complete... -Oct 12, 2024 1:31:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... -Oct 12, 2024 1:31:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-1/tp.git completed! -Oct 12, 2024 1:31:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-4/tp.git completed! -Oct 12, 2024 1:31:03 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T13-1/tp.git... -Oct 12, 2024 1:31:03 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:24:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T13-1/tp.git to complete... +Oct 13, 2024 1:24:59 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-1/tp.git completed! +Oct 13, 2024 1:24:59 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T16-2/tp.git... -Oct 12, 2024 1:31:03 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:24:59 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T16-2/tp.git to complete... -Oct 12, 2024 1:31:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T13-1/tp.git to complete... -Oct 12, 2024 1:31:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master)... -Oct 12, 2024 1:31:03 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-3/tp.git (master) completed! -Oct 12, 2024 1:31:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T14-3/tp.git completed! -Oct 12, 2024 1:31:03 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F08-3/tp.git... -Oct 12, 2024 1:31:03 PM reposense.report.ReportGenerator analyzeRepos -INFO: [21/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... -Oct 12, 2024 1:31:03 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F08-3/tp.git to complete... -Oct 12, 2024 1:31:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... -Oct 12, 2024 1:31:03 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:03 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... -Oct 12, 2024 1:31:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... -Oct 12, 2024 1:31:03 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master) completed! -Oct 12, 2024 1:31:04 PM reposense.report.ReportGenerator analyzeRepos -INFO: [22/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... -Oct 12, 2024 1:31:04 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:24:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:04 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:24:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... -Oct 12, 2024 1:31:04 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-4/tp.git completed! +Oct 13, 2024 1:25:00 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F08-3/tp.git... +Oct 13, 2024 1:25:00 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F08-3/tp.git to complete... +Oct 13, 2024 1:25:00 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-1/tp.git completed! -Oct 12, 2024 1:31:04 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:00 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T13-4/tp.git... -Oct 12, 2024 1:31:04 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T13-4/tp.git to complete... -Oct 12, 2024 1:31:04 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T13-1/tp.git completed! -Oct 12, 2024 1:31:04 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T13-2/tp.git... -Oct 12, 2024 1:31:04 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T13-2/tp.git to complete... -Oct 12, 2024 1:31:05 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... -Oct 12, 2024 1:31:05 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-2/tp.git completed! -Oct 12, 2024 1:31:05 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:01 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T13-3/tp.git... -Oct 12, 2024 1:31:05 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:01 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T13-3/tp.git to complete... -Oct 12, 2024 1:31:05 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F08-3/tp.git completed! -Oct 12, 2024 1:31:05 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... -Oct 12, 2024 1:31:05 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master) completed! -Oct 12, 2024 1:31:05 PM reposense.report.ReportGenerator analyzeRepos -INFO: [23/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... -Oct 12, 2024 1:31:05 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F12-1/tp.git... -Oct 12, 2024 1:31:05 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:05 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... -Oct 12, 2024 1:31:05 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F12-1/tp.git to complete... -Oct 12, 2024 1:31:06 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T13-2/tp.git completed! -Oct 12, 2024 1:31:06 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:02 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F12-2/tp.git... -Oct 12, 2024 1:31:06 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:02 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F12-2/tp.git to complete... -Oct 12, 2024 1:31:06 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:03 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... +Oct 13, 2024 1:25:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T13-4/tp.git completed! -Oct 12, 2024 1:31:07 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F09-3/tp.git... -Oct 12, 2024 1:31:07 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F09-3/tp.git to complete... -Oct 12, 2024 1:31:07 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T13-3/tp.git completed! -Oct 12, 2024 1:31:07 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:03 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F09-2/tp.git... -Oct 12, 2024 1:31:07 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:03 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F09-2/tp.git to complete... -Oct 12, 2024 1:31:07 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:03 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master)... +Oct 13, 2024 1:25:03 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-3/tp.git (master) completed! +Oct 13, 2024 1:25:03 AM reposense.report.ReportGenerator analyzeRepos +INFO: [22/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... +Oct 13, 2024 1:25:03 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:03 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... +Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F12-1/tp.git completed! -Oct 12, 2024 1:31:07 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F09-1/tp.git... -Oct 12, 2024 1:31:07 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F09-1/tp.git to complete... -Oct 12, 2024 1:31:08 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F12-2/tp.git completed! -Oct 12, 2024 1:31:08 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F09-2/tp.git completed! +Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F10-1/tp.git... -Oct 12, 2024 1:31:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F10-1/tp.git to complete... -Oct 12, 2024 1:31:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F09-3/tp.git completed! -Oct 12, 2024 1:31:08 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F10-2/tp.git... -Oct 12, 2024 1:31:08 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F10-2/tp.git to complete... -Oct 12, 2024 1:31:08 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... -Oct 12, 2024 1:31:08 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F09-2/tp.git completed! -Oct 12, 2024 1:31:08 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:04 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F10-1/tp.git to complete... +Oct 13, 2024 1:25:05 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F09-3/tp.git completed! +Oct 13, 2024 1:25:05 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W14-1/tp.git... -Oct 12, 2024 1:31:08 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:05 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W14-1/tp.git to complete... -Oct 12, 2024 1:31:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... -Oct 12, 2024 1:31:09 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master) completed! -Oct 12, 2024 1:31:09 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... +Oct 13, 2024 1:25:05 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... +Oct 13, 2024 1:25:05 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master)... +Oct 13, 2024 1:25:05 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-3/tp.git (master) completed! +Oct 13, 2024 1:25:05 AM reposense.report.ReportGenerator analyzeRepos +INFO: [23/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... +Oct 13, 2024 1:25:06 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... +Oct 13, 2024 1:25:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... +Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-2/tp.git completed! +Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F09-1/tp.git completed! -Oct 12, 2024 1:31:09 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... -Oct 12, 2024 1:31:09 PM reposense.report.ReportGenerator analyzeRepos -INFO: [24/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... -Oct 12, 2024 1:31:09 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F10-3/tp.git... -Oct 12, 2024 1:31:09 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:09 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... -Oct 12, 2024 1:31:09 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F10-3/tp.git to complete... -Oct 12, 2024 1:31:09 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... -Oct 12, 2024 1:31:09 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master) completed! -Oct 12, 2024 1:31:09 PM reposense.report.ReportGenerator analyzeRepos -INFO: [25/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... -Oct 12, 2024 1:31:10 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... -Oct 12, 2024 1:31:10 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... -Oct 12, 2024 1:31:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-1/tp.git completed! -Oct 12, 2024 1:31:10 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F10-4/tp.git... -Oct 12, 2024 1:31:10 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F10-4/tp.git to complete... -Oct 12, 2024 1:31:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-2/tp.git completed! -Oct 12, 2024 1:31:10 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W14-1/tp.git completed! -Oct 12, 2024 1:31:10 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:06 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master) completed! +Oct 13, 2024 1:25:06 AM reposense.report.ReportGenerator analyzeRepos +INFO: [24/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... +Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-1/tp.git completed! +Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W14-2/tp.git... -Oct 12, 2024 1:31:10 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:06 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:06 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... +Oct 13, 2024 1:25:06 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W14-2/tp.git to complete... -Oct 12, 2024 1:31:10 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:07 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W14-1/tp.git completed! +Oct 13, 2024 1:25:07 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W14-3/tp.git... -Oct 12, 2024 1:31:10 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master)... -Oct 12, 2024 1:31:10 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:07 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W14-3/tp.git to complete... -Oct 12, 2024 1:31:10 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-3/tp.git (master) completed! -Oct 12, 2024 1:31:10 PM reposense.report.ReportGenerator analyzeRepos -INFO: [26/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... -Oct 12, 2024 1:31:10 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:10 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... -Oct 12, 2024 1:31:11 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-3/tp.git completed! -Oct 12, 2024 1:31:11 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-4/tp.git completed! +Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T14-4/tp.git... -Oct 12, 2024 1:31:11 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T14-4/tp.git to complete... -Oct 12, 2024 1:31:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-4/tp.git completed! -Oct 12, 2024 1:31:12 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F10-3/tp.git completed! +Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T09-3/tp.git... -Oct 12, 2024 1:31:12 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-3/tp.git to complete... -Oct 12, 2024 1:31:12 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W14-2/tp.git completed! -Oct 12, 2024 1:31:12 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T14-2/tp.git... -Oct 12, 2024 1:31:12 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-3/tp.git to complete... +Oct 13, 2024 1:25:08 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T14-2/tp.git to complete... -Oct 12, 2024 1:31:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... -Oct 12, 2024 1:31:12 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W14-3/tp.git completed! -Oct 12, 2024 1:31:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... -Oct 12, 2024 1:31:12 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F11-1/tp.git... -Oct 12, 2024 1:31:12 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F11-1/tp.git to complete... -Oct 12, 2024 1:31:12 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... -Oct 12, 2024 1:31:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... -Oct 12, 2024 1:31:12 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master) completed! -Oct 12, 2024 1:31:12 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... -Oct 12, 2024 1:31:12 PM reposense.report.ReportGenerator analyzeRepos -INFO: [27/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... -Oct 12, 2024 1:31:12 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master) completed! -Oct 12, 2024 1:31:12 PM reposense.report.ReportGenerator analyzeRepos -INFO: [28/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... -Oct 12, 2024 1:31:13 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... -Oct 12, 2024 1:31:13 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... -Oct 12, 2024 1:31:13 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T14-4/tp.git completed! -Oct 12, 2024 1:31:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... -Oct 12, 2024 1:31:13 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... -Oct 12, 2024 1:31:13 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F11-1/tp.git... -Oct 12, 2024 1:31:13 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master) completed! -Oct 12, 2024 1:31:13 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F11-1/tp.git to complete... -Oct 12, 2024 1:31:13 PM reposense.report.ReportGenerator analyzeRepos -INFO: [29/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... -Oct 12, 2024 1:31:13 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... -Oct 12, 2024 1:31:13 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... -Oct 12, 2024 1:31:13 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master) completed! -Oct 12, 2024 1:31:13 PM reposense.report.ReportGenerator analyzeRepos -INFO: [30/120] Analyzing https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... -Oct 12, 2024 1:31:13 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103-F13-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:13 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... -Oct 12, 2024 1:31:14 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:09 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... +Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T09-3/tp.git completed! -Oct 12, 2024 1:31:14 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:09 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F11-3/tp.git... -Oct 12, 2024 1:31:14 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... +Oct 13, 2024 1:25:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F11-3/tp.git to complete... -Oct 12, 2024 1:31:14 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103-F11-1/tp.git completed! -Oct 12, 2024 1:31:14 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T14-2/tp.git completed! -Oct 12, 2024 1:31:14 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:10 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W13-1/tp.git... -Oct 12, 2024 1:31:14 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W09-2/tp.git... -Oct 12, 2024 1:31:14 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W13-1/tp.git to complete... -Oct 12, 2024 1:31:14 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master)... +Oct 13, 2024 1:25:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-4/tp.git (master) completed! +Oct 13, 2024 1:25:10 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master)... +Oct 13, 2024 1:25:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [25/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... +Oct 13, 2024 1:25:10 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-2/tp.git (master) completed! +Oct 13, 2024 1:25:10 AM reposense.report.ReportGenerator analyzeRepos +INFO: [26/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... +Oct 13, 2024 1:25:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... +Oct 13, 2024 1:25:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... +Oct 13, 2024 1:25:10 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... +Oct 13, 2024 1:25:10 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:10 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... +Oct 13, 2024 1:25:10 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103-F11-1/tp.git completed! +Oct 13, 2024 1:25:10 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W09-2/tp.git... +Oct 13, 2024 1:25:10 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W09-2/tp.git to complete... -Oct 12, 2024 1:31:14 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... -Oct 12, 2024 1:31:14 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... -Oct 12, 2024 1:31:14 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master) completed! -Oct 12, 2024 1:31:15 PM reposense.report.ReportGenerator analyzeRepos -INFO: [31/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... -Oct 12, 2024 1:31:15 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... -Oct 12, 2024 1:31:15 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... -Oct 12, 2024 1:31:15 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master) completed! -Oct 12, 2024 1:31:15 PM reposense.report.ReportGenerator analyzeRepos -INFO: [32/120] Analyzing https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... -Oct 12, 2024 1:31:15 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... -Oct 12, 2024 1:31:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-3/tp.git completed! -Oct 12, 2024 1:31:15 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master)... +Oct 13, 2024 1:25:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-4/tp.git (master) completed! +Oct 13, 2024 1:25:11 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master)... +Oct 13, 2024 1:25:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [27/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... +Oct 13, 2024 1:25:11 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-2/tp.git (master) completed! +Oct 13, 2024 1:25:11 AM reposense.report.ReportGenerator analyzeRepos +INFO: [28/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... +Oct 13, 2024 1:25:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-1/tp.git completed! +Oct 13, 2024 1:25:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W13-3/tp.git... -Oct 12, 2024 1:31:15 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... +Oct 13, 2024 1:25:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W13-3/tp.git to complete... -Oct 12, 2024 1:31:15 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-1/tp.git completed! -Oct 12, 2024 1:31:15 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103-F10-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:15 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... -Oct 12, 2024 1:31:15 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:11 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:11 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... +Oct 13, 2024 1:25:11 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-3/tp.git completed! +Oct 13, 2024 1:25:11 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F12-3/tp.git... -Oct 12, 2024 1:31:15 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:11 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F12-3/tp.git to complete... -Oct 12, 2024 1:31:15 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-1/tp.git completed! -Oct 12, 2024 1:31:16 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-2/tp.git completed! -Oct 12, 2024 1:31:16 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W09-4/tp.git... -Oct 12, 2024 1:31:16 PM reposense.report.RepoCloner spawnCloneProcess -INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F08-2/tp.git... -Oct 12, 2024 1:31:16 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W09-4/tp.git to complete... -Oct 12, 2024 1:31:16 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:12 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-2/tp.git completed! +Oct 13, 2024 1:25:12 AM reposense.report.RepoCloner spawnCloneProcess +INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F08-2/tp.git... +Oct 13, 2024 1:25:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F08-2/tp.git to complete... -Oct 12, 2024 1:31:16 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... -Oct 12, 2024 1:31:17 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:12 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-3/tp.git completed! -Oct 12, 2024 1:31:17 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:12 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... +Oct 13, 2024 1:25:12 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F08-4/tp.git... -Oct 12, 2024 1:31:17 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F08-4/tp.git to complete... -Oct 12, 2024 1:31:17 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... -Oct 12, 2024 1:31:17 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master) completed! -Oct 12, 2024 1:31:17 PM reposense.report.ReportGenerator analyzeRepos -INFO: [33/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... -Oct 12, 2024 1:31:17 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:17 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-1a/tp.git (master) completed! +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [29/120] Analyzing https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F13-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-4/tp.git (master) completed! +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [30/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-1/tp.git (master) completed! +Oct 13, 2024 1:25:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F12-3/tp.git completed! -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-4/tp.git completed! -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14a-3/tp.git... -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [31/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14a-3/tp.git to complete... +Oct 13, 2024 1:25:13 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-1/tp.git (master) completed! +Oct 13, 2024 1:25:13 AM reposense.report.ReportGenerator analyzeRepos +INFO: [32/120] Analyzing https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... +Oct 13, 2024 1:25:13 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-4/tp.git completed! +Oct 13, 2024 1:25:13 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F12-1/tp.git... -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:13 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F12-1/tp.git to complete... -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14a-3/tp.git to complete... -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F10-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... +Oct 13, 2024 1:25:14 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:14 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... +Oct 13, 2024 1:25:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F08-2/tp.git completed! -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:14 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F08-4/tp.git completed! +Oct 13, 2024 1:25:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F14a-2/tp.git... -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F14a-2/tp.git to complete... -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F08-4/tp.git completed! -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:14 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W12-2/tp.git... -Oct 12, 2024 1:31:18 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:14 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W12-2/tp.git to complete... -Oct 12, 2024 1:31:19 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... -Oct 12, 2024 1:31:19 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-3/tp.git completed! -Oct 12, 2024 1:31:19 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:15 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W12-3/tp.git... -Oct 12, 2024 1:31:19 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:15 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W12-3/tp.git to complete... -Oct 12, 2024 1:31:19 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... -Oct 12, 2024 1:31:19 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F10-1/tp.git (master) completed! -Oct 12, 2024 1:31:19 PM reposense.report.ReportGenerator analyzeRepos -INFO: [34/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... -Oct 12, 2024 1:31:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-2/tp.git completed! -Oct 12, 2024 1:31:20 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-2/tp.git completed! +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F15-2/tp.git... -Oct 12, 2024 1:31:20 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:20 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... -Oct 12, 2024 1:31:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-1/tp.git completed! -Oct 12, 2024 1:31:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-2/tp.git to complete... -Oct 12, 2024 1:31:20 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F14a-2/tp.git completed! +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F15-3/tp.git... -Oct 12, 2024 1:31:20 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-2/tp.git to complete... +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F15-3/tp.git to complete... -Oct 12, 2024 1:31:20 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-2/tp.git completed! -Oct 12, 2024 1:31:20 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-1/tp.git completed! +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T15-3/tp.git... -Oct 12, 2024 1:31:20 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T15-3/tp.git to complete... -Oct 12, 2024 1:31:21 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:16 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W12-3/tp.git completed! -Oct 12, 2024 1:31:21 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T08-4/tp.git... -Oct 12, 2024 1:31:21 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:17 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... +Oct 13, 2024 1:25:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T08-4/tp.git to complete... -Oct 12, 2024 1:31:21 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F15-3/tp.git completed! -Oct 12, 2024 1:31:21 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:17 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master)... +Oct 13, 2024 1:25:17 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F09-2/tp.git... -Oct 12, 2024 1:31:21 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:17 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-4/tp.git (master) completed! +Oct 13, 2024 1:25:17 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F09-2/tp.git to complete... -Oct 12, 2024 1:31:21 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... -Oct 12, 2024 1:31:22 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:17 AM reposense.report.ReportGenerator analyzeRepos +INFO: [33/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... +Oct 13, 2024 1:25:17 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:17 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... +Oct 13, 2024 1:25:18 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... +Oct 13, 2024 1:25:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F15-2/tp.git completed! -Oct 12, 2024 1:31:22 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... -Oct 12, 2024 1:31:22 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F09-3/tp.git... -Oct 12, 2024 1:31:22 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F09-3/tp.git to complete... -Oct 12, 2024 1:31:22 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:18 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F10-1/tp.git (master)... +Oct 13, 2024 1:25:18 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F10-1/tp.git (master) completed! +Oct 13, 2024 1:25:18 AM reposense.report.ReportGenerator analyzeRepos +INFO: [34/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... +Oct 13, 2024 1:25:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T15-3/tp.git completed! -Oct 12, 2024 1:31:22 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:18 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T09-2/tp.git... -Oct 12, 2024 1:31:22 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:18 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:18 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... +Oct 13, 2024 1:25:18 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T09-2/tp.git to complete... -Oct 12, 2024 1:31:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... -Oct 12, 2024 1:31:22 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master) completed! -Oct 12, 2024 1:31:22 PM reposense.report.ReportGenerator analyzeRepos -INFO: [35/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... -Oct 12, 2024 1:31:22 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:22 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... -Oct 12, 2024 1:31:22 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... -Oct 12, 2024 1:31:22 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master) completed! -Oct 12, 2024 1:31:22 PM reposense.report.ReportGenerator analyzeRepos -INFO: [36/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... -Oct 12, 2024 1:31:23 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:23 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... -Oct 12, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-4/tp.git completed! -Oct 12, 2024 1:31:23 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F10-2/tp.git... -Oct 12, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F10-2/tp.git to complete... -Oct 12, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-2/tp.git completed! -Oct 12, 2024 1:31:23 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T15-2/tp.git... -Oct 12, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T15-2/tp.git to complete... -Oct 12, 2024 1:31:23 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F09-3/tp.git completed! -Oct 12, 2024 1:31:23 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F13-4/tp.git... -Oct 12, 2024 1:31:24 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:19 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F13-4/tp.git to complete... -Oct 12, 2024 1:31:24 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... -Oct 12, 2024 1:31:24 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... -Oct 12, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master) completed! -Oct 12, 2024 1:31:24 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T09-2/tp.git completed! -Oct 12, 2024 1:31:24 PM reposense.report.ReportGenerator analyzeRepos -INFO: [37/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... -Oct 12, 2024 1:31:24 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F10-3/tp.git... -Oct 12, 2024 1:31:24 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F10-3/tp.git to complete... -Oct 12, 2024 1:31:24 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:24 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... -Oct 12, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F10-2/tp.git completed! -Oct 12, 2024 1:31:25 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F08-1a/tp.git... -Oct 12, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F08-1a/tp.git to complete... +Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T15-2/tp.git completed! -Oct 12, 2024 1:31:25 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103-F13-3/tp.git... -Oct 12, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F08-1a/tp.git to complete... -Oct 12, 2024 1:31:25 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:20 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103-F13-3/tp.git to complete... -Oct 12, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:21 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... +Oct 13, 2024 1:25:21 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master)... +Oct 13, 2024 1:25:21 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-4/tp.git (master) completed! +Oct 13, 2024 1:25:21 AM reposense.report.ReportGenerator analyzeRepos +INFO: [35/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... +Oct 13, 2024 1:25:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F13-4/tp.git completed! -Oct 12, 2024 1:31:26 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W08-2/tp.git... -Oct 12, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:22 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:22 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... +Oct 13, 2024 1:25:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W08-2/tp.git to complete... -Oct 12, 2024 1:31:26 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... -Oct 12, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F13-3/tp.git completed! -Oct 12, 2024 1:31:26 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:22 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T12-1/tp.git... -Oct 12, 2024 1:31:26 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:22 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T12-1/tp.git to complete... -Oct 12, 2024 1:31:26 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... -Oct 12, 2024 1:31:27 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-1/tp.git (master) completed! -Oct 12, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... +Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103-F10-3/tp.git completed! -Oct 12, 2024 1:31:27 PM reposense.report.ReportGenerator analyzeRepos -INFO: [38/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... -Oct 12, 2024 1:31:27 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T12-2/tp.git... -Oct 12, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T12-2/tp.git to complete... -Oct 12, 2024 1:31:27 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:27 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... -Oct 12, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-F08-1a/tp.git completed! -Oct 12, 2024 1:31:27 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T12-2/tp.git to complete... +Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W08-1/tp.git... -Oct 12, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W08-1/tp.git to complete... -Oct 12, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master)... +Oct 13, 2024 1:25:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-1/tp.git (master) completed! +Oct 13, 2024 1:25:23 AM reposense.report.ReportGenerator analyzeRepos +INFO: [36/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... +Oct 13, 2024 1:25:23 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... +Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W08-2/tp.git completed! -Oct 12, 2024 1:31:27 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T17-2/tp.git... -Oct 12, 2024 1:31:27 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:23 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T17-2/tp.git to complete... -Oct 12, 2024 1:31:27 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... -Oct 12, 2024 1:31:28 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... -Oct 12, 2024 1:31:28 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master) completed! -Oct 12, 2024 1:31:28 PM reposense.report.ReportGenerator analyzeRepos -INFO: [39/120] Analyzing https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... -Oct 12, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:23 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:23 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... +Oct 13, 2024 1:25:23 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master)... +Oct 13, 2024 1:25:23 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-1/tp.git (master) completed! +Oct 13, 2024 1:25:24 AM reposense.report.ReportGenerator analyzeRepos +INFO: [37/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... +Oct 13, 2024 1:25:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-1/tp.git completed! -Oct 12, 2024 1:31:28 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T08-1/tp.git... -Oct 12, 2024 1:31:28 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103-F13-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:28 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... -Oct 12, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T08-1/tp.git to complete... -Oct 12, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:24 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:24 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... +Oct 13, 2024 1:25:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T12-2/tp.git completed! -Oct 12, 2024 1:31:28 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:24 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F11-4/tp.git... -Oct 12, 2024 1:31:28 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:24 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F11-4/tp.git to complete... -Oct 12, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-W08-1/tp.git completed! -Oct 12, 2024 1:31:29 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T14-1/tp.git... -Oct 12, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-2/tp.git completed! -Oct 12, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T14-1/tp.git to complete... -Oct 12, 2024 1:31:29 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T17-2/tp.git completed! +Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W09-3/tp.git... -Oct 12, 2024 1:31:29 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W09-3/tp.git to complete... -Oct 12, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T08-1/tp.git completed! -Oct 12, 2024 1:31:30 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-F12-2/tp.git... -Oct 12, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-4/tp.git completed! -Oct 12, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:25 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-F12-2/tp.git to complete... -Oct 12, 2024 1:31:30 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F11-4/tp.git completed! +Oct 13, 2024 1:25:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T11-4/tp.git... -Oct 12, 2024 1:31:30 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T11-4/tp.git to complete... -Oct 12, 2024 1:31:30 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... -Oct 12, 2024 1:31:30 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... -Oct 12, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master) completed! -Oct 12, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepos -INFO: [40/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-3/tp.git completed! -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:26 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... +Oct 13, 2024 1:25:26 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-2/tp.git completed! +Oct 13, 2024 1:25:26 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W13-4/tp.git... -Oct 12, 2024 1:31:31 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:31 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:26 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W13-4/tp.git to complete... -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T14-1/tp.git completed! -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:27 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-1/tp.git (master)... +Oct 13, 2024 1:25:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-W10-3/tp.git... -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-F12-2/tp.git completed! -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:27 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-1/tp.git (master) completed! +Oct 13, 2024 1:25:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-W10-3/tp.git to complete... -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner spawnCloneProcess +Oct 13, 2024 1:25:27 AM reposense.report.ReportGenerator analyzeRepos +INFO: [38/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... +Oct 13, 2024 1:25:27 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W09-3/tp.git completed! +Oct 13, 2024 1:25:27 AM reposense.report.RepoCloner spawnCloneProcess INFO: Cloning in parallel from https://github.com/AY2425S1-CS2103T-T16-4/tp.git... -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:27 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:27 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... +Oct 13, 2024 1:25:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Waiting for cloning of https://github.com/AY2425S1-CS2103T-T16-4/tp.git to complete... -Oct 12, 2024 1:31:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... -Oct 12, 2024 1:31:31 PM reposense.report.RepoCloner waitForCloneProcess +Oct 13, 2024 1:25:27 AM reposense.report.RepoCloner waitForCloneProcess INFO: Cloning of https://github.com/AY2425S1-CS2103T-T11-4/tp.git completed! -Oct 12, 2024 1:31:31 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... +Oct 13, 2024 1:25:28 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... +Oct 13, 2024 1:25:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master)... +Oct 13, 2024 1:25:28 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master)... +Oct 13, 2024 1:25:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-4/tp.git (master) completed! +Oct 13, 2024 1:25:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [39/120] Analyzing https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... +Oct 13, 2024 1:25:28 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-1/tp.git (master) completed! +Oct 13, 2024 1:25:28 AM reposense.report.ReportGenerator analyzeRepos +INFO: [40/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... +Oct 13, 2024 1:25:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F13-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... +Oct 13, 2024 1:25:28 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:28 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... +Oct 13, 2024 1:25:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-3/tp.git completed! +Oct 13, 2024 1:25:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-4/tp.git completed! +Oct 13, 2024 1:25:29 AM reposense.report.RepoCloner waitForCloneProcess +INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-4/tp.git completed! +Oct 13, 2024 1:25:29 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... -Oct 12, 2024 1:31:31 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... -Oct 12, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master) completed! -Oct 12, 2024 1:31:31 PM reposense.report.ReportGenerator analyzeRepos -INFO: [41/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... -Oct 12, 2024 1:31:32 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:29 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master)... -Oct 12, 2024 1:31:32 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:29 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-1/tp.git (master) completed! -Oct 12, 2024 1:31:32 PM reposense.report.ReportGenerator analyzeRepos -INFO: [42/120] Analyzing https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... -Oct 12, 2024 1:31:32 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:29 AM reposense.report.ReportGenerator analyzeRepos +INFO: [41/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... +Oct 13, 2024 1:25:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... -Oct 12, 2024 1:31:32 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... +Oct 13, 2024 1:25:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master)... +Oct 13, 2024 1:25:30 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-3/tp.git (master) completed! +Oct 13, 2024 1:25:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [42/120] Analyzing https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... +Oct 13, 2024 1:25:30 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:32 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... -Oct 12, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W13-4/tp.git completed! -Oct 12, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-T16-4/tp.git completed! -Oct 12, 2024 1:31:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... -Oct 12, 2024 1:31:33 PM reposense.report.RepoCloner waitForCloneProcess -INFO: Cloning of https://github.com/AY2425S1-CS2103T-W10-3/tp.git completed! -Oct 12, 2024 1:31:33 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... -Oct 12, 2024 1:31:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... -Oct 12, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-2/tp.git (master) completed! -Oct 12, 2024 1:31:33 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... -Oct 12, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepos -INFO: [43/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... -Oct 12, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master) completed! -Oct 12, 2024 1:31:33 PM reposense.report.ReportGenerator analyzeRepos -INFO: [44/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... -Oct 12, 2024 1:31:33 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... -Oct 12, 2024 1:31:33 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:33 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... -Oct 12, 2024 1:31:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:30 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... -Oct 12, 2024 1:31:34 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:30 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master)... -Oct 12, 2024 1:31:34 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:30 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T12-3/tp.git (master) completed! -Oct 12, 2024 1:31:34 PM reposense.report.ReportGenerator analyzeRepos -INFO: [45/120] Analyzing https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... -Oct 12, 2024 1:31:34 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:30 AM reposense.report.ReportGenerator analyzeRepos +INFO: [43/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... +Oct 13, 2024 1:25:30 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:30 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... +Oct 13, 2024 1:25:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... +Oct 13, 2024 1:25:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master)... +Oct 13, 2024 1:25:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W14-4/tp.git (master) completed! +Oct 13, 2024 1:25:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [44/120] Analyzing https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... +Oct 13, 2024 1:25:31 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F11-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:34 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... -Oct 12, 2024 1:31:34 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... +Oct 13, 2024 1:25:31 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-2/tp.git (master)... +Oct 13, 2024 1:25:31 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-2/tp.git (master) completed! +Oct 13, 2024 1:25:31 AM reposense.report.ReportGenerator analyzeRepos +INFO: [45/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... +Oct 13, 2024 1:25:31 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:31 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... +Oct 13, 2024 1:25:31 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... +Oct 13, 2024 1:25:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:32 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-2/tp.git (master) completed! -Oct 12, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:32 AM reposense.report.ReportGenerator analyzeRepos INFO: [46/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master) completed! -Oct 12, 2024 1:31:35 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:32 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepos -INFO: [47/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:32 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-4/tp.git (master) completed! -Oct 12, 2024 1:31:35 PM reposense.report.ReportGenerator analyzeRepos -INFO: [48/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:32 AM reposense.report.ReportGenerator analyzeRepos +INFO: [47/120] Analyzing https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... +Oct 13, 2024 1:25:32 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:32 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... -Oct 12, 2024 1:31:35 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:35 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:32 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... +Oct 13, 2024 1:25:32 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master)... +Oct 13, 2024 1:25:32 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T12-4/tp.git (master) completed! +Oct 13, 2024 1:25:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [48/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... +Oct 13, 2024 1:25:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... +Oct 13, 2024 1:25:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master) completed! -Oct 12, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [49/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:33 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W11-3/tp.git (master) completed! -Oct 12, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [50/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [49/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... +Oct 13, 2024 1:25:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... +Oct 13, 2024 1:25:33 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:33 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:33 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-2/tp.git (master) completed! -Oct 12, 2024 1:31:36 PM reposense.report.ReportGenerator analyzeRepos -INFO: [51/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... -Oct 12, 2024 1:31:36 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:33 AM reposense.report.ReportGenerator analyzeRepos +INFO: [50/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... +Oct 13, 2024 1:25:33 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:33 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... +Oct 13, 2024 1:25:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... +Oct 13, 2024 1:25:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... +Oct 13, 2024 1:25:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... +Oct 13, 2024 1:25:34 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master) completed! +Oct 13, 2024 1:25:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [51/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... +Oct 13, 2024 1:25:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master)... +Oct 13, 2024 1:25:34 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-3/tp.git (master) completed! +Oct 13, 2024 1:25:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [52/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... +Oct 13, 2024 1:25:34 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... +Oct 13, 2024 1:25:34 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:36 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:34 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... -Oct 12, 2024 1:31:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:34 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... -Oct 12, 2024 1:31:37 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... -Oct 12, 2024 1:31:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:34 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master)... -Oct 12, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:34 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-4/tp.git (master) completed! -Oct 12, 2024 1:31:37 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master)... -Oct 12, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepos -INFO: [52/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master)... -Oct 12, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-4/tp.git (master) completed! -Oct 12, 2024 1:31:37 PM reposense.report.ReportGenerator analyzeRepos -INFO: [53/120] Analyzing https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... -Oct 12, 2024 1:31:37 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:34 AM reposense.report.ReportGenerator analyzeRepos +INFO: [53/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master)... +Oct 13, 2024 1:25:35 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master)... -Oct 12, 2024 1:31:37 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103-F12-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:37 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:35 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:35 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W13-2/tp.git (master) completed! -Oct 12, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepos -INFO: [54/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:35 AM reposense.report.ReportGenerator analyzeRepos +INFO: [54/120] Analyzing https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... +Oct 13, 2024 1:25:35 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F12-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:35 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... +Oct 13, 2024 1:25:35 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... +Oct 13, 2024 1:25:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... +Oct 13, 2024 1:25:36 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F11-2/tp.git (master) completed! +Oct 13, 2024 1:25:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [55/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... +Oct 13, 2024 1:25:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... +Oct 13, 2024 1:25:36 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... +Oct 13, 2024 1:25:36 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-1/tp.git (master) completed! -Oct 12, 2024 1:31:38 PM reposense.report.ReportGenerator analyzeRepos -INFO: [55/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:36 AM reposense.report.ReportGenerator analyzeRepos +INFO: [56/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... +Oct 13, 2024 1:25:36 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:38 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... -Oct 12, 2024 1:31:38 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-4/tp.git (master) completed! -Oct 12, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [56/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F11-2/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F11-2/tp.git (master) completed! -Oct 12, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:36 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... +Oct 13, 2024 1:25:36 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master) completed! +Oct 13, 2024 1:25:36 AM reposense.report.ReportGenerator analyzeRepos INFO: [57/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:36 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:39 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:36 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:36 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... +Oct 13, 2024 1:25:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-4/tp.git (master)... +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-4/tp.git (master) completed! +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [58/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... +Oct 13, 2024 1:25:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-4/tp.git (master) completed! -Oct 12, 2024 1:31:39 PM reposense.report.ReportGenerator analyzeRepos -INFO: [58/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... -Oct 12, 2024 1:31:39 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master) completed! -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepos INFO: [59/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master)... +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-1/tp.git (master) completed! +Oct 13, 2024 1:25:37 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master) completed! -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepos INFO: [60/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master)... +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-1/tp.git (master) completed! +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepos +INFO: [61/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master)... +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master) completed! -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator analyzeRepos -INFO: [61/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master)... -Oct 12, 2024 1:31:40 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:40 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-3/tp.git (master) completed! -Oct 12, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:37 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master)... +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-1/tp.git (master) completed! +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator analyzeRepos INFO: [62/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:37 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:37 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... +Oct 13, 2024 1:25:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master)... +Oct 13, 2024 1:25:38 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:38 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-2/tp.git (master) completed! -Oct 12, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:38 AM reposense.report.ReportGenerator analyzeRepos INFO: [63/120] Analyzing https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:38 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:41 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:38 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master)... -Oct 12, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master) completed! -Oct 12, 2024 1:31:41 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:38 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... +Oct 13, 2024 1:25:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master) completed! +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator analyzeRepos INFO: [64/120] Analyzing https://github.com/AY2425S1-CS2103-F12-1/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F12-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F12-1/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master)... +Oct 13, 2024 1:25:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master)... +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-3/tp.git (master) completed! -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:39 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master) completed! +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator analyzeRepos INFO: [65/120] Analyzing https://github.com/AY2425S1-CS2103-F12-2/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-2/tp.git (master) completed! +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [66/120] Analyzing https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator analyzeRepos +INFO: [67/120] Analyzing https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F09-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F12-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F12-2/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-3/tp.git (master) completed! -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [66/120] Analyzing https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:39 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F09-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:42 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:39 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:39 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-1/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T13-4/tp.git (master) completed! -Oct 12, 2024 1:31:42 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-1/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:40 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-1/tp.git (master) completed! -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [67/120] Analyzing https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... -Oct 12, 2024 1:31:42 PM reposense.report.ReportGenerator analyzeRepos -INFO: [68/120] Analyzing https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... -Oct 12, 2024 1:31:43 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103-F09-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... -Oct 12, 2024 1:31:43 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [68/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... +Oct 13, 2024 1:25:40 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... +Oct 13, 2024 1:25:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... +Oct 13, 2024 1:25:40 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... +Oct 13, 2024 1:25:40 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master) completed! +Oct 13, 2024 1:25:40 AM reposense.report.ReportGenerator analyzeRepos +INFO: [69/120] Analyzing https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... +Oct 13, 2024 1:25:40 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... +Oct 13, 2024 1:25:40 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F09-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:43 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:40 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F09-3/tp.git (master) completed! -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [69/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F09-2/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:41 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103-F09-2/tp.git (master) completed! -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:41 AM reposense.report.ReportGenerator analyzeRepos +INFO: [70/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... +Oct 13, 2024 1:25:41 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [70/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F09-1/tp.git (master) completed! -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:41 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... +Oct 13, 2024 1:25:41 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F09-3/tp.git (master)... +Oct 13, 2024 1:25:41 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F09-3/tp.git (master) completed! +Oct 13, 2024 1:25:41 AM reposense.report.ReportGenerator analyzeRepos INFO: [71/120] Analyzing https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-2/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:41 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:41 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-2/tp.git (master)... +Oct 13, 2024 1:25:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-2/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-2/tp.git (master) completed! -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator analyzeRepos -INFO: [72/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... -Oct 12, 2024 1:31:44 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:44 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... -Oct 12, 2024 1:31:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... -Oct 12, 2024 1:31:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master)... -Oct 12, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-2/tp.git (master) completed! -Oct 12, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepos -INFO: [73/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... -Oct 12, 2024 1:31:45 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master)... +Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [72/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... +Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... -Oct 12, 2024 1:31:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master)... -Oct 12, 2024 1:31:45 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master)... -Oct 12, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... +Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W14-1/tp.git (master) completed! -Oct 12, 2024 1:31:45 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator analyzeRepos +INFO: [73/120] Analyzing https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... +Oct 13, 2024 1:25:42 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F09-1/tp.git (master)... +Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... +Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F09-1/tp.git (master) completed! +Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator analyzeRepos INFO: [74/120] Analyzing https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... -Oct 12, 2024 1:31:45 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:42 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:45 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:42 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... -Oct 12, 2024 1:31:45 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master) completed! -Oct 12, 2024 1:31:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:42 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... +Oct 13, 2024 1:25:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master) completed! +Oct 13, 2024 1:25:43 AM reposense.report.ReportGenerator analyzeRepos INFO: [75/120] Analyzing https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:43 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-1/tp.git (master) completed! -Oct 12, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... +Oct 13, 2024 1:25:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master)... +Oct 13, 2024 1:25:43 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-3/tp.git (master) completed! +Oct 13, 2024 1:25:43 AM reposense.report.ReportGenerator analyzeRepos INFO: [76/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:43 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:46 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:43 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:43 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:43 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master)... -Oct 12, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:43 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W14-2/tp.git (master) completed! -Oct 12, 2024 1:31:46 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:43 AM reposense.report.ReportGenerator analyzeRepos INFO: [77/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master)... -Oct 12, 2024 1:31:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... -Oct 12, 2024 1:31:47 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:44 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master)... -Oct 12, 2024 1:31:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... +Oct 13, 2024 1:25:44 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master)... -Oct 12, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:44 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F10-4/tp.git (master) completed! -Oct 12, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepos -INFO: [78/120] Analyzing https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... -Oct 12, 2024 1:31:47 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103-F11-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:47 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... -Oct 12, 2024 1:31:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:44 AM reposense.report.ReportGenerator analyzeRepos +INFO: [78/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... +Oct 13, 2024 1:25:44 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:44 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... +Oct 13, 2024 1:25:44 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master)... -Oct 12, 2024 1:31:47 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master)... -Oct 12, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-3/tp.git (master) completed! -Oct 12, 2024 1:31:47 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [79/120] Analyzing https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103-F11-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... +Oct 13, 2024 1:25:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master)... -Oct 12, 2024 1:31:47 PM reposense.report.ReportGenerator analyzeRepos -INFO: [79/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... -Oct 12, 2024 1:31:48 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... -Oct 12, 2024 1:31:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master)... -Oct 12, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-4/tp.git (master) completed! -Oct 12, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepos -INFO: [80/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... -Oct 12, 2024 1:31:48 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [80/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... +Oct 13, 2024 1:25:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master) completed! +Oct 13, 2024 1:25:45 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master)... +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [81/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:45 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... -Oct 12, 2024 1:31:48 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master)... -Oct 12, 2024 1:31:48 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:45 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master)... -Oct 12, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W14-3/tp.git (master) completed! -Oct 12, 2024 1:31:48 PM reposense.report.ReportGenerator analyzeRepos -INFO: [81/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... -Oct 12, 2024 1:31:48 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:48 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:45 AM reposense.report.ReportGenerator analyzeRepos +INFO: [82/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... +Oct 13, 2024 1:25:46 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... +Oct 13, 2024 1:25:46 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:46 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:46 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W13-1/tp.git (master) completed! -Oct 12, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepos -INFO: [82/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-2/tp.git (master) completed! -Oct 12, 2024 1:31:49 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:46 AM reposense.report.ReportGenerator analyzeRepos INFO: [83/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F11-1/tp.git (master) completed! -Oct 12, 2024 1:31:49 PM reposense.report.ReportGenerator analyzeRepos -INFO: [84/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:46 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:46 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... +Oct 13, 2024 1:25:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F11-1/tp.git (master)... +Oct 13, 2024 1:25:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F11-1/tp.git (master) completed! +Oct 13, 2024 1:25:47 AM reposense.report.ReportGenerator analyzeRepos +INFO: [84/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... +Oct 13, 2024 1:25:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:49 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... -Oct 12, 2024 1:31:49 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... -Oct 12, 2024 1:31:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:47 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... +Oct 13, 2024 1:25:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master)... -Oct 12, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:47 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-3/tp.git (master) completed! -Oct 12, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:47 AM reposense.report.ReportGenerator analyzeRepos INFO: [85/120] Analyzing https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... -Oct 12, 2024 1:31:50 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... -Oct 12, 2024 1:31:50 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:47 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... +Oct 13, 2024 1:25:47 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master) completed! +Oct 13, 2024 1:25:47 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F12-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:47 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... -Oct 12, 2024 1:31:50 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... -Oct 12, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master) completed! -Oct 12, 2024 1:31:50 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:47 AM reposense.report.ReportGenerator analyzeRepos INFO: [86/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... -Oct 12, 2024 1:31:50 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:48 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:50 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-3/tp.git (master) completed! -Oct 12, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... +Oct 13, 2024 1:25:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master)... +Oct 13, 2024 1:25:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W13-3/tp.git (master) completed! +Oct 13, 2024 1:25:48 AM reposense.report.ReportGenerator analyzeRepos INFO: [87/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:48 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master) completed! -Oct 12, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... +Oct 13, 2024 1:25:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F12-3/tp.git (master)... +Oct 13, 2024 1:25:48 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F12-3/tp.git (master) completed! +Oct 13, 2024 1:25:48 AM reposense.report.ReportGenerator analyzeRepos INFO: [88/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:48 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:48 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-1/tp.git (master) completed! -Oct 12, 2024 1:31:51 PM reposense.report.ReportGenerator analyzeRepos -INFO: [89/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:51 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... -Oct 12, 2024 1:31:51 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:48 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:48 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:48 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-2/tp.git (master) completed! -Oct 12, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [90/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:48 AM reposense.report.ReportGenerator analyzeRepos +INFO: [89/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-4/tp.git (master) completed! -Oct 12, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [91/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [90/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-4/tp.git (master) completed! +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [91/120] Analyzing https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master) completed! +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator analyzeRepos +INFO: [92/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:49 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-3/tp.git (master) completed! -Oct 12, 2024 1:31:52 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:49 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.report.ReportGenerator analyzeRepos -INFO: [92/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... -Oct 12, 2024 1:31:52 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:52 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master) completed! -Oct 12, 2024 1:31:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-2/tp.git (master) completed! -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:49 AM reposense.report.ReportGenerator analyzeRepos INFO: [93/120] Analyzing https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepos -INFO: [94/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:50 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master)... +Oct 13, 2024 1:25:50 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-2/tp.git (master) completed! +Oct 13, 2024 1:25:50 AM reposense.report.ReportGenerator analyzeRepos +INFO: [94/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master)... +Oct 13, 2024 1:25:50 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:50 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:50 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-3/tp.git (master) completed! -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:50 AM reposense.report.ReportGenerator analyzeRepos INFO: [95/120] Analyzing https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:50 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:50 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master)... +Oct 13, 2024 1:25:50 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... +Oct 13, 2024 1:25:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... +Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-1/tp.git (master) completed! -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator analyzeRepos INFO: [96/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master)... -Oct 12, 2024 1:31:53 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... +Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:53 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master)... -Oct 12, 2024 1:31:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... -Oct 12, 2024 1:31:54 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master)... -Oct 12, 2024 1:31:54 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W12-3/tp.git (master) completed! -Oct 12, 2024 1:31:54 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator analyzeRepos INFO: [97/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master)... -Oct 12, 2024 1:31:54 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:54 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master)... -Oct 12, 2024 1:31:54 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:51 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:51 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-4/tp.git (master) completed! -Oct 12, 2024 1:31:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator analyzeRepos INFO: [98/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master) completed! -Oct 12, 2024 1:31:55 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:51 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:51 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master)... +Oct 13, 2024 1:25:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master)... +Oct 13, 2024 1:25:52 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-3/tp.git (master) completed! +Oct 13, 2024 1:25:52 AM reposense.report.ReportGenerator analyzeRepos INFO: [99/120] Analyzing https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:52 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:55 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:52 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:52 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:52 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master)... -Oct 12, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:52 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F15-2/tp.git (master) completed! -Oct 12, 2024 1:31:55 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator analyzeRepos INFO: [100/120] Analyzing https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master) completed! -Oct 12, 2024 1:31:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... +Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-2/tp.git (master) completed! -Oct 12, 2024 1:31:56 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator analyzeRepos INFO: [101/120] Analyzing https://github.com/AY2425S1-CS2103-F10-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepos -INFO: [102/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master) completed! -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F10-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F10-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator analyzeRepos -INFO: [103/120] Analyzing https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... +Oct 13, 2024 1:25:53 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... +Oct 13, 2024 1:25:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master)... +Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F14a-2/tp.git (master) completed! +Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator analyzeRepos +INFO: [102/120] Analyzing https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... +Oct 13, 2024 1:25:53 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master)... +Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:53 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... -Oct 12, 2024 1:31:56 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:53 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F09-3/tp.git (master) completed! +Oct 13, 2024 1:25:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F10-2/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [103/120] Analyzing https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F13-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:56 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F10-2/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master) completed! -Oct 12, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [104/120] Analyzing https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F10-2/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F10-2/tp.git (master) completed! +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [104/120] Analyzing https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F13-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F10-2/tp.git (master) completed! -Oct 12, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [105/120] Analyzing https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T15-2/tp.git (master) completed! +Oct 13, 2024 1:25:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-3/tp.git (master) completed! +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [105/120] Analyzing https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator analyzeRepos +INFO: [106/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103-F10-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:57 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... -Oct 12, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master) completed! -Oct 12, 2024 1:31:57 PM reposense.report.ReportGenerator analyzeRepos -INFO: [106/120] Analyzing https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:54 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-3/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-3/tp.git (master) completed! -Oct 12, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:54 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master)... +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T09-2/tp.git (master) completed! +Oct 13, 2024 1:25:54 AM reposense.report.ReportGenerator analyzeRepos INFO: [107/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:55 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:55 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-2/tp.git (master) completed! -Oct 12, 2024 1:31:58 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:55 AM reposense.report.ReportGenerator analyzeRepos INFO: [108/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... -Oct 12, 2024 1:31:58 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:55 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:58 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:55 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:55 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-4/tp.git (master) completed! -Oct 12, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepos -INFO: [109/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T12-1/tp.git (master) completed! -Oct 12, 2024 1:31:59 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator analyzeRepos +INFO: [109/120] Analyzing https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... +Oct 13, 2024 1:25:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... +Oct 13, 2024 1:25:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master) completed! +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator analyzeRepos INFO: [110/120] Analyzing https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F13-4/tp.git (master)... +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F13-4/tp.git (master) completed! +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103-F10-3/tp.git (master) completed! -Oct 12, 2024 1:31:59 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator analyzeRepos INFO: [111/120] Analyzing https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:31:59 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... -Oct 12, 2024 1:31:59 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F08-1a/tp.git (master) completed! -Oct 12, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... +Oct 13, 2024 1:25:56 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103-F10-3/tp.git (master)... +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103-F10-3/tp.git (master) completed! +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator analyzeRepos INFO: [112/120] Analyzing https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:56 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:32:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:56 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:56 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... +Oct 13, 2024 1:25:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master)... +Oct 13, 2024 1:25:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:57 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T12-2/tp.git (master) completed! -Oct 12, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:57 AM reposense.report.ReportGenerator analyzeRepos INFO: [113/120] Analyzing https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:32:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:57 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T17-2/tp.git (master) completed! -Oct 12, 2024 1:32:00 PM reposense.report.ReportGenerator analyzeRepos -INFO: [114/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... -Oct 12, 2024 1:32:00 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:32:00 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master) completed! -Oct 12, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:57 AM reposense.report.ReportGenerator analyzeRepos +INFO: [114/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... +Oct 13, 2024 1:25:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... +Oct 13, 2024 1:25:57 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:57 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... +Oct 13, 2024 1:25:57 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... +Oct 13, 2024 1:25:57 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... +Oct 13, 2024 1:25:57 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master) completed! +Oct 13, 2024 1:25:57 AM reposense.report.ReportGenerator analyzeRepos INFO: [115/120] Analyzing https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:58 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:32:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master) completed! -Oct 12, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepos -INFO: [116/120] Analyzing https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:32:01 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... +Oct 13, 2024 1:25:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master)... +Oct 13, 2024 1:25:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-F11-4/tp.git (master) completed! +Oct 13, 2024 1:25:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [116/120] Analyzing https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... +Oct 13, 2024 1:25:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... +Oct 13, 2024 1:25:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master)... +Oct 13, 2024 1:25:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master)... -Oct 12, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master) completed! -Oct 12, 2024 1:32:01 PM reposense.report.ReportGenerator analyzeRepos +Oct 13, 2024 1:25:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master)... +Oct 13, 2024 1:25:58 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master) completed! +Oct 13, 2024 1:25:58 AM reposense.report.ReportGenerator analyzeRepos INFO: [117/120] Analyzing https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:32:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:58 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:58 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T08-1/tp.git (master) completed! -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [118/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator updateRepoConfig +Oct 13, 2024 1:25:58 AM reposense.report.ReportGenerator analyzeRepos +INFO: [118/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... +Oct 13, 2024 1:25:58 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:58 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master)... +Oct 13, 2024 1:25:58 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... +Oct 13, 2024 1:25:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... +Oct 13, 2024 1:25:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master)... +Oct 13, 2024 1:25:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W08-1/tp.git (master) completed! +Oct 13, 2024 1:25:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [119/120] Analyzing https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... +Oct 13, 2024 1:25:59 AM reposense.report.ReportGenerator updateRepoConfig INFO: https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:32:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos +Oct 13, 2024 1:25:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-F12-2/tp.git (master) completed! -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [119/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:32:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:25:59 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... +Oct 13, 2024 1:25:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:25:59 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T11-4/tp.git (master) completed! -Oct 12, 2024 1:32:02 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-T14-1/tp.git (master) completed! -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator analyzeRepos -INFO: [120/120] Analyzing https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... -Oct 12, 2024 1:32:02 PM reposense.report.ReportGenerator updateRepoConfig -INFO: https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master) does not contain a standalone config file. -Oct 12, 2024 1:32:02 PM reposense.authorship.FileInfoExtractor extractTextFileInfos -INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... -Oct 12, 2024 1:32:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos +Oct 13, 2024 1:25:59 AM reposense.report.ReportGenerator analyzeRepos +INFO: [120/120] Analyzing https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... +Oct 13, 2024 1:25:59 AM reposense.report.ReportGenerator updateRepoConfig +INFO: https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master) does not contain a standalone config file. +Oct 13, 2024 1:25:59 AM reposense.authorship.FileInfoExtractor extractTextFileInfos +INFO: Extracting relevant file info from https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... +Oct 13, 2024 1:25:59 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master)... +Oct 13, 2024 1:25:59 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W09-3/tp.git (master) completed! +Oct 13, 2024 1:26:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... +Oct 13, 2024 1:26:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... -Oct 12, 2024 1:32:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:26:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits +INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... +Oct 13, 2024 1:26:00 AM reposense.commits.CommitInfoExtractor extractCommitInfos +INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... +Oct 13, 2024 1:26:00 AM reposense.report.ReportGenerator analyzeRepo +INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master) completed! +Oct 13, 2024 1:26:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master)... -Oct 12, 2024 1:32:03 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:26:00 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-T16-4/tp.git (master) completed! -Oct 12, 2024 1:32:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... -Oct 12, 2024 1:32:03 PM reposense.commits.CommitInfoAnalyzer analyzeCommits +Oct 13, 2024 1:26:00 AM reposense.commits.CommitInfoAnalyzer analyzeCommits INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master)... -Oct 12, 2024 1:32:03 PM reposense.report.ReportGenerator analyzeRepo +Oct 13, 2024 1:26:00 AM reposense.report.ReportGenerator analyzeRepo INFO: Analysis of https://github.com/AY2425S1-CS2103T-W13-4/tp.git (master) completed! -Oct 12, 2024 1:32:03 PM reposense.commits.CommitInfoExtractor extractCommitInfos -INFO: Extracting commits info for https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... -Oct 12, 2024 1:32:04 PM reposense.commits.CommitInfoAnalyzer analyzeCommits -INFO: Analyzing commits info for https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master)... -Oct 12, 2024 1:32:04 PM reposense.report.ReportGenerator analyzeRepo -INFO: Analysis of https://github.com/AY2425S1-CS2103T-W10-3/tp.git (master) completed! -Oct 12, 2024 1:32:04 PM reposense.report.ReportGenerator generateReposReport +Oct 13, 2024 1:26:00 AM reposense.report.ReportGenerator generateReposReport INFO: The report is generated at /home/runner/work/tp-dashboard/tp-dashboard/reposense-report -Oct 12, 2024 1:32:05 PM reposense.RepoSense main -INFO: Elapsed processing time: 1 minute(s) 31.38 second(s) +Oct 13, 2024 1:26:02 AM reposense.RepoSense main +INFO: Elapsed processing time: 1 minute(s) 30.79 second(s) diff --git a/summary.json b/summary.json index ef67ca90..73da15c8 100644 --- a/summary.json +++ b/summary.json @@ -1 +1 @@ -{"repoSenseVersion":"03dd38d625","reportGeneratedTime":"Sat, 12 Oct 2024 21:30:34 UTC+08:00","reportGenerationTime":" 1 minute(s) 29.94 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 tP Code Dashboard","repos":[{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-1a/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-1a","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-1a/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-1a_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-1a/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-1a","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-1a/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-1a_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F09-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F09-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F09-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F10-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F10-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F10-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F11-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F11-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F11-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F11-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-4/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-4/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-4_tp_master"}],"errorSet":[],"sinceDate":"2024-09-20","untilDate":"2024-10-12","isSinceDateProvided":true,"isUntilDateProvided":false,"supportedDomainUrlMap":{"NOT_RECOGNIZED":{"BRANCH":"","REPO_URL":"UNSUPPORTED","BASE_URL":"UNSUPPORTED","HISTORY_PATH":"","COMMIT_PATH":"","BLAME_PATH":""},"github":{"BRANCH":"tree/$BRANCH","REPO_URL":"https://github.com/$ORGANIZATION/$REPO_NAME/","BASE_URL":"https://github.com/","HISTORY_PATH":"commits/$BRANCH/$FILE_PATH","COMMIT_PATH":"commit/$COMMIT_HASH","BLAME_PATH":"blame/$BRANCH/$FILE_PATH"}},"isAuthorshipAnalyzed":false,"blurbs":{"urlBlurbMap":{"https://github.com/AY2425S1-CS2103T-W10-4/tp/tree/master":"**Product:** [StoreClass](https://ay2425s1-cs2103t-w10-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-4/tp/tree/master":"**Product:** [AgentAssist](https://ay2425s1-cs2103t-t14-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-4/tp/tree/master":"**Product:** [EZSTATES](https://ay2425s1-cs2103t-f11-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-1/tp/tree/master":"**Product:** [Eventory](https://ay2425s1-cs2103t-t12-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-3/tp/tree/master":"**Product:** [BridalBuddy](https://ay2425s1-cs2103t-f09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-3/tp/tree/master":"**Product:** [EduManage](https://ay2425s1-cs2103t-w08-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-2/tp/tree/master":"**Product:** [EduTutu](https://ay2425s1-cs2103t-t15-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-2/tp/tree/master":"**Product:** [AB3-My-Guest](https://ay2425s1-cs2103t-w11-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-3/tp/tree/master":"**Product:** [Hall Pointer](https://ay2425s1-cs2103t-w14-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-1/tp/tree/master":"**Product:** [ConcertPhonebook](https://ay2425s1-cs2103t-f11-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-2/tp/tree/master":"**Product:** [T_Assistant](https://ay2425s1-cs2103-f12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-4/tp/tree/master":"**Product:** [TAHub](https://ay2425s1-cs2103t-t08-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-3/tp/tree/master":"**Product:** [NUStates](https://ay2425s1-cs2103t-f10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-4/tp/tree/master":"**Product:** [GamerBook Pro Max](https://ay2425s1-cs2103t-t12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-4/tp/tree/master":"**Product:** [Clientell](https://ay2425s1-cs2103t-f13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-4/tp/tree/master":"**Product:** [TalentHub](https://ay2425s1-cs2103t-w12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-2/tp/tree/master":"**Product:** [TAHub Contacts](https://ay2425s1-cs2103t-f14b-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-1/tp/tree/master":"**Product:** [UGTeach](https://ay2425s1-cs2103t-f14a-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F11-1/tp/tree/master":"**Product:** [TAchy](https://ay2425s1-cs2103-f11-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F09-2/tp/tree/master":"**Product:** [RealConnect](https://ay2425s1-cs2103-f09-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-3/tp/tree/master":"**Product:** [UniLink](https://ay2425s1-cs2103t-w12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-2/tp/tree/master":"**Product:** [TalentSG](https://ay2425s1-cs2103t-t09-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-2/tp/tree/master":"**Product:** [EduConnect](https://ay2425s1-cs2103t-f12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-1/tp/tree/master":"**Product:** [Prudy](https://ay2425s1-cs2103t-t14-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-4/tp/tree/master":"**Product:** [LegacyLink](https://ay2425s1-cs2103t-t10-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-3/tp/tree/master":"**Product:** [ContactMate](https://ay2425s1-cs2103t-f14b-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-1/tp/tree/master":"**Product:** [HiredFiredPro](https://ay2425s1-cs2103t-w09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-2/tp/tree/master":"**Product:** [ServiceTrack](https://ay2425s1-cs2103t-t17-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-1a/tp/tree/master":"**Product:** [VolunTier](https://ay2425s1-cs2103t-f08-1a.github.io/tp)","https://github.com/AY2425S1-CS2103-F09-3/tp/tree/master":"**Product:** [Talentcy](https://ay2425s1-cs2103-f09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-3/tp/tree/master":"**Product:** [PROperty](https://ay2425s1-cs2103t-f15-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-1/tp/tree/master":"**Product:** [Cher](https://ay2425s1-cs2103t-w13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-1/tp/tree/master":"**Product:** [InternBuddy](https://ay2425s1-cs2103t-t09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-3/tp/tree/master":"**Product:** [MediBase3](https://ay2425s1-cs2103t-f12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-1/tp/tree/master":"**Product:** [UniVerse](https://ay2425s1-cs2103t-t17-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-2/tp/tree/master":"**Product:** [KonTActs](https://ay2425s1-cs2103t-t11-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-2/tp/tree/master":"**Product:** [EduLog](https://ay2425s1-cs2103t-w09-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-1/tp/tree/master":"**Product:** [DLTbook](https://ay2425s1-cs2103t-t08-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-4/tp/tree/master":"**Product:** [EventfulNUS](https://ay2425s1-cs2103t-w14-4.github.io/tp)","https://github.com/AY2425S1-CS2103-F10-3/tp/tree/master":"**Product:** [BizBook](https://ay2425s1-cs2103-f10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-1/tp/tree/master":"**Product:** [HRHelper](https://ay2425s1-cs2103t-t16-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W10-3/tp/tree/master":"**Product:** [AgentConnect](https://ay2425s1-cs2103t-w10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-2/tp/tree/master":"**Product:** [PlanPal](https://ay2425s1-cs2103t-f09-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-1/tp/tree/master":"**Product:** [SpleetWaise](https://ay2425s1-cs2103-f13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-4/tp/tree/master":"**Product:** [SalesContactPro](https://ay2425s1-cs2103t-t17-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-3/tp/tree/master":"**Product:** [Dream Day Designer](https://ay2425s1-cs2103t-f13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-4/tp/tree/master":"**Product:** [DorManagerPro](https://ay2425s1-cs2103t-w09-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-1/tp/tree/master":"**Product:** [MediContact](https://ay2425s1-cs2103t-t10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-2/tp/tree/master":"**Product:** [CCAConnect](https://ay2425s1-cs2103t-f11-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-3/tp/tree/master":"**Product:** [SeeRee 2.0](https://ay2425s1-cs2103-f13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-3/tp/tree/master":"**Product:** [PawPatrol](https://ay2425s1-cs2103t-t13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W10-1/tp/tree/master":"**Product:** [Teacher’s Pet](https://ay2425s1-cs2103t-w10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-4/tp/tree/master":"**Product:** [GOATS - Greatest Online Address-book for Tutoring Students](https://ay2425s1-cs2103t-t09-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-1/tp/tree/master":"**Product:** [TrackMate](https://ay2425s1-cs2103t-w08-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-3/tp/tree/master":"**Product:** [MindMap](https://ay2425s1-cs2103t-w13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-3/tp/tree/master":"**Product:** [Clientele+](https://ay2425s1-cs2103t-f14a-3.github.io/tp)","https://github.com/AY2425S1-CS2103-F10-1/tp/tree/master":"**Product:** [SupplyCentral](https://ay2425s1-cs2103-f10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-4/tp/tree/master":"**Product:** [tuteez](https://ay2425s1-cs2103t-f09-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-4/tp/tree/master":"**Product:** [PhysioPal](https://ay2425s1-cs2103t-w11-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-3/tp/tree/master":"**Product:** [MedDict](https://ay2425s1-cs2103t-t08-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-1/tp/tree/master":"**Product:** [TAHub](https://ay2425s1-cs2103t-f13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-4/tp/tree/master":"**Product:** [Health Connect](https://ay2425s1-cs2103t-t11-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-1/tp/tree/master":"**Product:** [MedConnect](https://ay2425s1-cs2103t-t13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-3/tp/tree/master":"**Product:** [ContactsForGood (CFG)](https://ay2425s1-cs2103t-t16-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-2/tp/tree/master":"**Product:** [Volunteams](https://ay2425s1-cs2103t-w12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-2/tp/tree/master":"**Product:** [KeyContacts](https://ay2425s1-cs2103t-t08-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F09-1/tp/tree/master":"**Product:** [data coNdUctorS](https://ay2425s1-cs2103-f09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-2/tp/tree/master":"**Product:** [ABCLI](https://ay2425s1-cs2103t-f13-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-2/tp/tree/master":"**Product:** [ClientGrid.](https://ay2425s1-cs2103t-t16-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-3/tp/tree/master":"**Product:** [TASync](https://ay2425s1-cs2103t-t10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-1/tp/tree/master":"**Product:** [ClientHub](https://ay2425s1-cs2103t-f10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-4/tp/tree/master":"**Product:** [Financial Assurance Revolutionary Telemarketer](https://ay2425s1-cs2103t-f14b-4.github.io/tp)","https://github.com/AY2425S1-CS2103-F11-2/tp/tree/master":"**Product:** [TutorEase](https://ay2425s1-cs2103-f11-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-4/tp/tree/master":"**Product:** [CareLink](https://ay2425s1-cs2103t-t13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-1/tp/tree/master":"**Product:** [BizBook Pro](https://ay2425s1-cs2103t-t11-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-3/tp/tree/master":"**Product:** [HireMe](https://ay2425s1-cs2103t-w09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-3/tp/tree/master":"**Product:** [FindingbrUdders](https://ay2425s1-cs2103t-f08-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-4/tp/tree/master":"**Product:** [VBook](https://ay2425s1-cs2103t-f12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-1/tp/tree/master":"**Product:** [SocialBook](https://ay2425s1-cs2103t-f14b-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-1/tp/tree/master":"**Product:** [ContactCS](https://ay2425s1-cs2103t-f12-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-4/tp/tree/master":"**Product:** [StudentManagerPro](https://ay2425s1-cs2103-f12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-2/tp/tree/master":"**Product:** [UniNet](https://ay2425s1-cs2103t-t14-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-3/tp/tree/master":"**Product:** [InvenTrack](https://ay2425s1-cs2103t-t17-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-2/tp/tree/master":"**Product:** [EduContacts](https://ay2425s1-cs2103t-f15-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-1/tp/tree/master":"**Product:** [ClubConnect](https://ay2425s1-cs2103t-f09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-2/tp/tree/master":"**Product:** [BA€](https://ay2425s1-cs2103t-w14-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-3/tp/tree/master":"**Product:** [Grub](https://ay2425s1-cs2103-f12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-1/tp/tree/master":"**Product:** [VendorVault](https://ay2425s1-cs2103t-w14-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-4/tp/tree/master":"**Product:** [TechConnect](https://ay2425s1-cs2103t-f10-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-3/tp/tree/master":"**Product:** [LogiLink](https://ay2425s1-cs2103t-t12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-2/tp/tree/master":"**Product:** [PlanPerfect](https://ay2425s1-cs2103t-t12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-4/tp/tree/master":"**Product:** [HRConnect](https://ay2425s1-cs2103t-t15-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-3/tp/tree/master":"**Product:** [AcademyAssist](https://ay2425s1-cs2103t-w11-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-3/tp/tree/master":"**Product:** [Ward-Watch](https://ay2425s1-cs2103t-t15-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-4/tp/tree/master":"**Product:** [NetBook](https://ay2425s1-cs2103t-f08-4.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-1/tp/tree/master":"**Product:** [InSUREance](https://ay2425s1-cs2103-f12-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-4/tp/tree/master":"**Product:** [WedLinker](https://ay2425s1-cs2103t-f15-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-3/tp/tree/master":"**Product:** [MATER](https://ay2425s1-cs2103t-t14-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-2/tp/tree/master":"**Product:** [StaffSync](https://ay2425s1-cs2103t-t10-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-4/tp/tree/master":"**Product:** [GoonBook](https://ay2425s1-cs2103t-w08-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-1/tp/tree/master":"**Product:** [BlitzBiz](https://ay2425s1-cs2103t-w12-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-4/tp/tree/master":"**Product:** [KnottyPlanners](https://ay2425s1-cs2103t-w13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-2/tp/tree/master":"**Product:** [ClinicConnect](https://ay2425s1-cs2103t-f10-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-3/tp/tree/master":"**Product:** [MediContacts](https://ay2425s1-cs2103t-t09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-1/tp/tree/master":"**Product:** [NovaCare](https://ay2425s1-cs2103t-f15-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-2/tp/tree/master":"**Product:** [SellSavvy](https://ay2425s1-cs2103t-f14a-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-1a/tp/tree/master":"**Product:** [Murphy\u0027s List](https://ay2425s1-cs2103t-w11-1a.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-1/tp/tree/master":"**Product:** [TrueRental](https://ay2425s1-cs2103t-t15-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W10-2/tp/tree/master":"**Product:** [DocTrack](https://ay2425s1-cs2103t-w10-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-4/tp/tree/master":"**Product:** [TeleTutors](https://ay2425s1-cs2103t-t16-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-2/tp/tree/master":"**Product:** [ResearchRoster](https://ay2425s1-cs2103t-f08-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-2/tp/tree/master":"**Product:** [EventTory](https://ay2425s1-cs2103-f13-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F10-2/tp/tree/master":"**Product:** [SocialBook](https://ay2425s1-cs2103-f10-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-4/tp/tree/master":"**Product:** [TalentConnect](https://ay2425s1-cs2103-f13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-2/tp/tree/master":"**Product:** [CareConnect](https://ay2425s1-cs2103t-w13-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-3/tp/tree/master":"**Product:** [ClinicBuddy](https://ay2425s1-cs2103t-f11-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-2/tp/tree/master":"**Product:** [NomNom Notifier](https://ay2425s1-cs2103t-t13-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-3/tp/tree/master":"**Product:** [Bridal Boss](https://ay2425s1-cs2103t-t11-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-4/tp/tree/master":"**Product:** [CampusConnect](https://ay2425s1-cs2103t-f14a-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-2/tp/tree/master":"**Product:** [Eduvault](https://ay2425s1-cs2103t-w08-2.github.io/tp)"}}} +{"repoSenseVersion":"03dd38d625","reportGeneratedTime":"Sun, 13 Oct 2024 09:24:32 UTC+08:00","reportGenerationTime":" 1 minute(s) 29.35 second(s)","zoneId":"UTC+08:00","reportTitle":"CS2103 tP Code Dashboard","repos":[{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W08-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W08-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W08-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W08-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W09-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W09-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W09-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W09-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W10-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W10-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W10-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W10-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-1a/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-1a","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-1a/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-1a_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W11-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W11-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W11-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W11-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W12-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W13-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-W14-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-W14-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-W14-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-W14-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T08-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T08-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T08-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T08-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T09-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T09-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T09-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T09-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T10-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T10-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T10-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T10-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T11-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T11-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T11-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T11-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T12-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T13-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T14-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T14-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T14-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T14-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T15-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T15-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T15-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T15-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T16-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T16-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T16-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T16-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-T17-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-T17-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-T17-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-T17-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-1a/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-1a","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-1a/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-1a_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F08-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F08-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F08-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F08-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F09-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F09-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F09-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F09-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F09-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F09-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F09-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F10-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F10-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F10-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F10-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F10-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F10-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F10-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F11-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F11-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F11-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F11-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F11-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F11-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F11-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F11-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F12-4/tp[master]","outputFolderName":"AY2425S1-CS2103-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F12-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F12-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F12-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F12-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-1/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-2/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-3/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103-F13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103-F13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103-F13-4/tp[master]","outputFolderName":"AY2425S1-CS2103-F13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F13-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F13-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F13-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F13-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14b-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14b-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14b-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14b-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F14a-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F14a-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F14a-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F14a-4_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-1/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-1","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-1/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-1_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-2/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-2","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-2/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-2_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-3/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-3","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-3/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-3_tp_master"},{"location":{"location":"https://github.com/AY2425S1-CS2103T-F15-4/tp.git","repoName":"tp","organization":"AY2425S1-CS2103T-F15-4","domainName":"github"},"branch":"master","displayName":"AY2425S1-CS2103T-F15-4/tp[master]","outputFolderName":"AY2425S1-CS2103T-F15-4_tp_master"}],"errorSet":[],"sinceDate":"2024-09-20","untilDate":"2024-10-13","isSinceDateProvided":true,"isUntilDateProvided":false,"supportedDomainUrlMap":{"NOT_RECOGNIZED":{"BRANCH":"","REPO_URL":"UNSUPPORTED","BASE_URL":"UNSUPPORTED","HISTORY_PATH":"","COMMIT_PATH":"","BLAME_PATH":""},"github":{"BRANCH":"tree/$BRANCH","REPO_URL":"https://github.com/$ORGANIZATION/$REPO_NAME/","BASE_URL":"https://github.com/","HISTORY_PATH":"commits/$BRANCH/$FILE_PATH","COMMIT_PATH":"commit/$COMMIT_HASH","BLAME_PATH":"blame/$BRANCH/$FILE_PATH"}},"isAuthorshipAnalyzed":false,"blurbs":{"urlBlurbMap":{"https://github.com/AY2425S1-CS2103T-W10-4/tp/tree/master":"**Product:** [StoreClass](https://ay2425s1-cs2103t-w10-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-4/tp/tree/master":"**Product:** [AgentAssist](https://ay2425s1-cs2103t-t14-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-4/tp/tree/master":"**Product:** [EZSTATES](https://ay2425s1-cs2103t-f11-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-1/tp/tree/master":"**Product:** [Eventory](https://ay2425s1-cs2103t-t12-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-3/tp/tree/master":"**Product:** [BridalBuddy](https://ay2425s1-cs2103t-f09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-3/tp/tree/master":"**Product:** [EduManage](https://ay2425s1-cs2103t-w08-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-2/tp/tree/master":"**Product:** [EduTutu](https://ay2425s1-cs2103t-t15-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-2/tp/tree/master":"**Product:** [AB3-My-Guest](https://ay2425s1-cs2103t-w11-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-3/tp/tree/master":"**Product:** [Hall Pointer](https://ay2425s1-cs2103t-w14-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-1/tp/tree/master":"**Product:** [ConcertPhonebook](https://ay2425s1-cs2103t-f11-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-2/tp/tree/master":"**Product:** [T_Assistant](https://ay2425s1-cs2103-f12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-4/tp/tree/master":"**Product:** [TAHub](https://ay2425s1-cs2103t-t08-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-3/tp/tree/master":"**Product:** [NUStates](https://ay2425s1-cs2103t-f10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-4/tp/tree/master":"**Product:** [GamerBook Pro Max](https://ay2425s1-cs2103t-t12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-4/tp/tree/master":"**Product:** [Clientell](https://ay2425s1-cs2103t-f13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-4/tp/tree/master":"**Product:** [TalentHub](https://ay2425s1-cs2103t-w12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-2/tp/tree/master":"**Product:** [TAHub Contacts](https://ay2425s1-cs2103t-f14b-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-1/tp/tree/master":"**Product:** [UGTeach](https://ay2425s1-cs2103t-f14a-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F11-1/tp/tree/master":"**Product:** [TAchy](https://ay2425s1-cs2103-f11-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F09-2/tp/tree/master":"**Product:** [RealConnect](https://ay2425s1-cs2103-f09-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-3/tp/tree/master":"**Product:** [UniLink](https://ay2425s1-cs2103t-w12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-2/tp/tree/master":"**Product:** [TalentSG](https://ay2425s1-cs2103t-t09-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-2/tp/tree/master":"**Product:** [EduConnect](https://ay2425s1-cs2103t-f12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-1/tp/tree/master":"**Product:** [Prudy](https://ay2425s1-cs2103t-t14-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-4/tp/tree/master":"**Product:** [LegacyLink](https://ay2425s1-cs2103t-t10-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-3/tp/tree/master":"**Product:** [ContactMate](https://ay2425s1-cs2103t-f14b-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-1/tp/tree/master":"**Product:** [HiredFiredPro](https://ay2425s1-cs2103t-w09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-2/tp/tree/master":"**Product:** [ServiceTrack](https://ay2425s1-cs2103t-t17-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-1a/tp/tree/master":"**Product:** [VolunTier](https://ay2425s1-cs2103t-f08-1a.github.io/tp)","https://github.com/AY2425S1-CS2103-F09-3/tp/tree/master":"**Product:** [Talentcy](https://ay2425s1-cs2103-f09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-3/tp/tree/master":"**Product:** [PROperty](https://ay2425s1-cs2103t-f15-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-1/tp/tree/master":"**Product:** [Cher](https://ay2425s1-cs2103t-w13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-1/tp/tree/master":"**Product:** [InternBuddy](https://ay2425s1-cs2103t-t09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-3/tp/tree/master":"**Product:** [MediBase3](https://ay2425s1-cs2103t-f12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-1/tp/tree/master":"**Product:** [UniVerse](https://ay2425s1-cs2103t-t17-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-2/tp/tree/master":"**Product:** [KonTActs](https://ay2425s1-cs2103t-t11-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-2/tp/tree/master":"**Product:** [EduLog](https://ay2425s1-cs2103t-w09-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-1/tp/tree/master":"**Product:** [DLTbook](https://ay2425s1-cs2103t-t08-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-4/tp/tree/master":"**Product:** [EventfulNUS](https://ay2425s1-cs2103t-w14-4.github.io/tp)","https://github.com/AY2425S1-CS2103-F10-3/tp/tree/master":"**Product:** [BizBook](https://ay2425s1-cs2103-f10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-1/tp/tree/master":"**Product:** [HRHelper](https://ay2425s1-cs2103t-t16-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W10-3/tp/tree/master":"**Product:** [AgentConnect](https://ay2425s1-cs2103t-w10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-2/tp/tree/master":"**Product:** [PlanPal](https://ay2425s1-cs2103t-f09-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-1/tp/tree/master":"**Product:** [SpleetWaise](https://ay2425s1-cs2103-f13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-4/tp/tree/master":"**Product:** [SalesContactPro](https://ay2425s1-cs2103t-t17-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-3/tp/tree/master":"**Product:** [Dream Day Designer](https://ay2425s1-cs2103t-f13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-4/tp/tree/master":"**Product:** [DorManagerPro](https://ay2425s1-cs2103t-w09-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-1/tp/tree/master":"**Product:** [MediContact](https://ay2425s1-cs2103t-t10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-2/tp/tree/master":"**Product:** [CCAConnect](https://ay2425s1-cs2103t-f11-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-3/tp/tree/master":"**Product:** [SeeRee 2.0](https://ay2425s1-cs2103-f13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-3/tp/tree/master":"**Product:** [PawPatrol](https://ay2425s1-cs2103t-t13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W10-1/tp/tree/master":"**Product:** [Teacher’s Pet](https://ay2425s1-cs2103t-w10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-4/tp/tree/master":"**Product:** [GOATS - Greatest Online Address-book for Tutoring Students](https://ay2425s1-cs2103t-t09-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-1/tp/tree/master":"**Product:** [TrackMate](https://ay2425s1-cs2103t-w08-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-3/tp/tree/master":"**Product:** [MindMap](https://ay2425s1-cs2103t-w13-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-3/tp/tree/master":"**Product:** [Clientele+](https://ay2425s1-cs2103t-f14a-3.github.io/tp)","https://github.com/AY2425S1-CS2103-F10-1/tp/tree/master":"**Product:** [SupplyCentral](https://ay2425s1-cs2103-f10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-4/tp/tree/master":"**Product:** [tuteez](https://ay2425s1-cs2103t-f09-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-4/tp/tree/master":"**Product:** [PhysioPal](https://ay2425s1-cs2103t-w11-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-3/tp/tree/master":"**Product:** [MedDict](https://ay2425s1-cs2103t-t08-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-1/tp/tree/master":"**Product:** [TAHub](https://ay2425s1-cs2103t-f13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-4/tp/tree/master":"**Product:** [Health Connect](https://ay2425s1-cs2103t-t11-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-1/tp/tree/master":"**Product:** [MedConnect](https://ay2425s1-cs2103t-t13-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-3/tp/tree/master":"**Product:** [ContactsForGood (CFG)](https://ay2425s1-cs2103t-t16-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-2/tp/tree/master":"**Product:** [Volunteams](https://ay2425s1-cs2103t-w12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T08-2/tp/tree/master":"**Product:** [KeyContacts](https://ay2425s1-cs2103t-t08-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F09-1/tp/tree/master":"**Product:** [data coNdUctorS](https://ay2425s1-cs2103-f09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F13-2/tp/tree/master":"**Product:** [ABCLI](https://ay2425s1-cs2103t-f13-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-2/tp/tree/master":"**Product:** [ClientGrid.](https://ay2425s1-cs2103t-t16-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-3/tp/tree/master":"**Product:** [TASync](https://ay2425s1-cs2103t-t10-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-1/tp/tree/master":"**Product:** [ClientHub](https://ay2425s1-cs2103t-f10-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-4/tp/tree/master":"**Product:** [Financial Assurance Revolutionary Telemarketer](https://ay2425s1-cs2103t-f14b-4.github.io/tp)","https://github.com/AY2425S1-CS2103-F11-2/tp/tree/master":"**Product:** [TutorEase](https://ay2425s1-cs2103-f11-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-4/tp/tree/master":"**Product:** [CareLink](https://ay2425s1-cs2103t-t13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-1/tp/tree/master":"**Product:** [BizBook Pro](https://ay2425s1-cs2103t-t11-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W09-3/tp/tree/master":"**Product:** [HireMe](https://ay2425s1-cs2103t-w09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-3/tp/tree/master":"**Product:** [FindingbrUdders](https://ay2425s1-cs2103t-f08-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-4/tp/tree/master":"**Product:** [VBook](https://ay2425s1-cs2103t-f12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14b-1/tp/tree/master":"**Product:** [SocialBook](https://ay2425s1-cs2103t-f14b-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F12-1/tp/tree/master":"**Product:** [ContactCS](https://ay2425s1-cs2103t-f12-1.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-4/tp/tree/master":"**Product:** [StudentManagerPro](https://ay2425s1-cs2103-f12-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-2/tp/tree/master":"**Product:** [UniNet](https://ay2425s1-cs2103t-t14-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T17-3/tp/tree/master":"**Product:** [InvenTrack](https://ay2425s1-cs2103t-t17-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-2/tp/tree/master":"**Product:** [EduContacts](https://ay2425s1-cs2103t-f15-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F09-1/tp/tree/master":"**Product:** [ClubConnect](https://ay2425s1-cs2103t-f09-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-2/tp/tree/master":"**Product:** [BA€](https://ay2425s1-cs2103t-w14-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-3/tp/tree/master":"**Product:** [Grub](https://ay2425s1-cs2103-f12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-W14-1/tp/tree/master":"**Product:** [VendorVault](https://ay2425s1-cs2103t-w14-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-4/tp/tree/master":"**Product:** [TechConnect](https://ay2425s1-cs2103t-f10-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-3/tp/tree/master":"**Product:** [LogiLink](https://ay2425s1-cs2103t-t12-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T12-2/tp/tree/master":"**Product:** [PlanPerfect](https://ay2425s1-cs2103t-t12-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-4/tp/tree/master":"**Product:** [HRConnect](https://ay2425s1-cs2103t-t15-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-3/tp/tree/master":"**Product:** [AcademyAssist](https://ay2425s1-cs2103t-w11-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-3/tp/tree/master":"**Product:** [Ward-Watch](https://ay2425s1-cs2103t-t15-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-4/tp/tree/master":"**Product:** [NetBook](https://ay2425s1-cs2103t-f08-4.github.io/tp)","https://github.com/AY2425S1-CS2103-F12-1/tp/tree/master":"**Product:** [InSUREance](https://ay2425s1-cs2103-f12-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-4/tp/tree/master":"**Product:** [WedLinker](https://ay2425s1-cs2103t-f15-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-T14-3/tp/tree/master":"**Product:** [MATER](https://ay2425s1-cs2103t-t14-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T10-2/tp/tree/master":"**Product:** [StaffSync](https://ay2425s1-cs2103t-t10-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-4/tp/tree/master":"**Product:** [GoonBook](https://ay2425s1-cs2103t-w08-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W12-1/tp/tree/master":"**Product:** [BlitzBiz](https://ay2425s1-cs2103t-w12-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-4/tp/tree/master":"**Product:** [KnottyPlanners](https://ay2425s1-cs2103t-w13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F10-2/tp/tree/master":"**Product:** [ClinicConnect](https://ay2425s1-cs2103t-f10-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T09-3/tp/tree/master":"**Product:** [MediContacts](https://ay2425s1-cs2103t-t09-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F15-1/tp/tree/master":"**Product:** [NovaCare](https://ay2425s1-cs2103t-f15-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-2/tp/tree/master":"**Product:** [SellSavvy](https://ay2425s1-cs2103t-f14a-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-W11-1a/tp/tree/master":"**Product:** [Murphy\u0027s List](https://ay2425s1-cs2103t-w11-1a.github.io/tp)","https://github.com/AY2425S1-CS2103T-T15-1/tp/tree/master":"**Product:** [TrueRental](https://ay2425s1-cs2103t-t15-1.github.io/tp)","https://github.com/AY2425S1-CS2103T-W10-2/tp/tree/master":"**Product:** [DocTrack](https://ay2425s1-cs2103t-w10-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T16-4/tp/tree/master":"**Product:** [TeleTutors](https://ay2425s1-cs2103t-t16-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-F08-2/tp/tree/master":"**Product:** [ResearchRoster](https://ay2425s1-cs2103t-f08-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-2/tp/tree/master":"**Product:** [EventTory](https://ay2425s1-cs2103-f13-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F10-2/tp/tree/master":"**Product:** [SocialBook](https://ay2425s1-cs2103-f10-2.github.io/tp)","https://github.com/AY2425S1-CS2103-F13-4/tp/tree/master":"**Product:** [TalentConnect](https://ay2425s1-cs2103-f13-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W13-2/tp/tree/master":"**Product:** [CareConnect](https://ay2425s1-cs2103t-w13-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-F11-3/tp/tree/master":"**Product:** [ClinicBuddy](https://ay2425s1-cs2103t-f11-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-T13-2/tp/tree/master":"**Product:** [NomNom Notifier](https://ay2425s1-cs2103t-t13-2.github.io/tp)","https://github.com/AY2425S1-CS2103T-T11-3/tp/tree/master":"**Product:** [Bridal Boss](https://ay2425s1-cs2103t-t11-3.github.io/tp)","https://github.com/AY2425S1-CS2103T-F14a-4/tp/tree/master":"**Product:** [CampusConnect](https://ay2425s1-cs2103t-f14a-4.github.io/tp)","https://github.com/AY2425S1-CS2103T-W08-2/tp/tree/master":"**Product:** [Eduvault](https://ay2425s1-cs2103t-w08-2.github.io/tp)"}}}